k210 ─ k210模块

您所在的位置:网站首页 flash镜像翻转 k210 ─ k210模块

k210 ─ k210模块

2023-08-27 02:14| 来源: 网络整理| 查看: 265

移植于MaixPy的OpenMV函数

Image.load(path, copy_to_fb=True)¶

从 path 中的文件中创建一个新的图像对象。可以把图片存放至SD卡中,将对应图片文件路径作为该函数参数,将会创建该帧图片对象。支持bmp/pgm/ppm/jpg/jpeg格式的图像文件。

若 copy_to_fb 为True,图像会直接载入帧缓冲区,您就可以加载大幅图片了。若为False,图像会载入MicroPython的堆中,堆远比帧缓冲区小。copy_to_fb 为False,您应该尽量把图像大小控制在8KB以下。若为True,则图像最大可为160KB。

注意

使用时需要注意图片分辨率大小,过大的话会导致内存错误!

k210.save(path, roi=None, quality=50)¶

将图像的副本保存到 path 中的k210的文件系统

支持bmp/pgm/ppm/jpg/jpeg格式的图像文件。注意:您无法将jpeg格式的压缩图像保存成未压缩的格式。

roi 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定,ROI即复制整个图像的图像矩形。但这不适用于 JPEG 图像。

quality 指在图像尚未被压缩时将图像保存为JPEG格式的JPEG压缩质量。

Image.width()¶

返回以像素计的图像的宽度。

Image.height()¶

返回以像素计的图像的高度。

Image.format()¶

返回用于灰度图的 sensor.GRAYSCALE 、用于RGB图像的 sensor.RGB565

Image.size()¶

返回以字节计的图像大小。

Image.clear()¶

将图像中的所有像素设置为零(非常快)。

返回图像对象,以便您可以使用 . 表示法调用另一个方法。

不支持压缩图像。

Image.pix_to_ai()¶

将图像的所有像素点转换成AI运算的数据

Image.binary(threshold, invert=False, zero=False)¶

根据像素是否在阈值列表 thresholds 中的阈值内,将图像中的所有像素设置为黑色或白色。

thresholds 必须是元组列表。 [(lo, hi), (lo, hi), ..., (lo, hi)] 定义你想追踪的颜色范围。 对于灰度图像,每个元组需要包含两个值 - 最小灰度值和最大灰度值。 仅考虑落在这些阈值之间的像素区域。 对于RGB565图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi) - 分别是LAB L,A和B通道的最小值和最大值。 为方便使用,此功能将自动修复交换的最小值和最大值。此外,如果元组大于六个值,则忽略其余值。 相反,如果元组太短,则假定其余阈值处于最大范围。

invert 反转阈值操作,像素在已知颜色范围之外进行匹配,而非在已知颜色范围内。

设置 zero 为 True 来使阈值像素为零,并使不在阈值列表中的像素保持不变。

不支持压缩图像和bayer图像。

Image.strech_char(de_dark)¶

预处理消除暗角

Image.invert()¶

将二进制图像0(黑色)变为1(白色),1(白色)变为0(黑色),非常快速地翻转二进制图像中的所有像素值。

不支持压缩图像和Bayer图像。

Image.draw_string(x, y, text, scale=1, x_spacing=0, y_spacing=0, mono_space=True)¶

从图像中的(x, y)位置开始绘制8x10文本。您可以单独传递x,y,也可以作为元组(x,y)传递。

text - 是写入图像的字符串。 n, r, 和 rn 结束符将光标移至下一行。 color - 是用于灰度或RGB565图像的元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 scale - 增加图像上文本的大小,仅整数值。 x_spacing - 允许你在字符之间添加(如果是正数)或减去(如果是负数)x像素,设置字符间距。 y_spacing - 允许你在字符之间添加(如果是正数)或减去(如果是负数)y像素,设置行间距。 mono_space - 默认为True,强制文本间距固定。对于大文本,这看起来很糟糕。设置False以获得非固定宽度的字符间距。 Image.draw_line(x0, y0, x1, y1, color=(255, 255, 255), thickness=1)¶

在图像上绘制一条从(x0,y0)到(x1,y1)的线。 您可以单独传递x0,y0,x1,y1,也可以传递给元组(x0,y0,x1,y1)。

color - 是用于灰度或RGB565图像的元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 thickness - 控制线的粗细像素。 Image.draw_circle(x, y, radius, color=(255, 255, 255), thickness=1, fill=False)¶

在图像上绘制一个圆形。 您可以单独传递x,y,半径 或 作为元组(x,y,radius)传递。

color - 是用于灰度或RGB565图像的元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 thickness - 控制线的粗细像素。 fill - 设置为True以填充圆形。 Image.draw_rectangle(x, y, w, h, color=(255, 255, 255), thickness=1, fill=False)¶

在图像上绘制一个矩形。 您可以单独传递x,y,w,h或作为元组(x,y,w,h)传递。

color - 是用于灰度或RGB565图像的元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 thickness - 控制线的粗细像素。 fill - 设置为True以填充矩形。 Image.draw_cross(x, y, color=(255, 255, 255), size=5, thickness=1)¶

在图像上绘制一个十字。 您可以单独传递x,y或作为元组(x,y)传递。

color -- 是用于灰度或RGB565图像的RGB888元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 size -- 控制十字线的延伸长度。 thickness -- 控制边缘的像素厚度。

返回图像对象,以便您可以使用 . 表示法调用另一个方法。

不支持压缩图像和bayer图像。

Image.draw_arrow(x0, y0, x1, y1, color=(255, 255, 255), thickness=1)¶

在图像上绘制一条从(x0,y0)到(x1,y1)的箭头。

color - 是用于灰度或RGB565图像的元组。默认为白色。但是,您也可以传递灰度图像的基础像素值(0-255)或RGB565图像的字节反转RGB565值。 thickness - 控制线的粗细像素。 Image.draw_image(image, x, y, x_scale=1.0, y_scale=1.0, alpha=256)¶

绘制一个 image ,其左上角从位置x,y开始。

x_scale -- 控制图像在x方向(浮点数)缩放的程度。 y_scale -- 控制图像在y方向(浮点数)缩放的程度。 alpha -- 控制另一幅图像与这幅图像的混合程度。 alpha 应该是0到256之间的一个整数值。接近零的值会将更多其他图像混合到该图像中,而接近256的值则相反。

返回图像对象,以便您可以使用 . 表示法调用另一个方法。

不支持压缩图像和bayer图像。

Image.get_pixel(x, y)¶

灰度图:返回(x, y)位置的灰度像素值。

RGB565:返回(x, y)位置的RGB888像素元组(r, g, b)。

不支持压缩图像。

Image.set_pixel(x, y, pixel)¶

灰度图:将(x, y) 位置的像素设置为灰度值 pixel 。

RGB图像:将(x, y) 位置的像素设置为RGB888元组(r, g, b) pixel 。

不支持压缩图像。

Image.mean_pool(x_div, y_div)¶

在图像中找到 x_div * y_div 正方形的平均值,并返回由每个正方形的平均值组成的修改图像。

此方法允许您在原来图像上快速缩小图像。

不支持压缩图像和bayer图像。

Image.to_rainbow()¶

将图像转换为彩虹图像。 此方法也会修改基础图像像素,以字节为单位更改图像大小,因此只能在RGB565图像上进行。

Image.copy(roi, copy_to_fb=True)¶

创建一个图像对象的副本。

roi -- 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定,ROI即复制整个图像的图像矩形。但这不适用于JPEG图像。 copy_to_fb -- 如果 copy_to_fb 为 True ,则该方法将帧缓冲替换为图像。 帧缓冲区具有比堆大得多的空间,并且可以容纳大图像。 Image.to_grayscale(copy=False, rgb_channel=-1)¶

将图像转换为灰度图像。 此方法也会修改基础图像像素,以字节为单位更改图像大小,因此只能在灰度图像或RGB565图像上进行。 否则 copy 必须为True才能在堆上创建新的修改图像。

rgb_channel 如果设置为0/1/2,则分别从R/G/B通道创建一个灰度图像, 而如果在 RGB565 图像上调用此方法,则从 RGB565 像素计算灰度值。

返回图像对象,以便您可以使用 . 表示法调用另一个方法。

不支持压缩图像和bayer图像。

Image.resize(w, h)¶

改变图像大小, w 、h 为图像修改后的图像宽高

Image.find_blobs(thresholds, invert=False, roi=None, x_stride=2, y_stride=1, area_threshold=10, pixels_threshold=10, merge=False, margin=0)¶

查找图像中所有色块,并返回一个包括每个色块的色块对象的列表。请观察 blob 对象以获取更多信息。

thresholds - 必须是元组列表。[(lo, hi), (lo, hi), ..., (lo, hi)] 定义你想追踪的颜色范围。对于灰度图像,每个元组需要包含两个值-最小灰度值和最大灰度值。仅考虑落在这些阈值之间的像素区域。对于RGB565图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi) - 分别是LAB L,A和B通道的最小值和最大值。为方便使用,此功能将自动修复交换的最小值和最大值。此外,如果元组大于六个值,则忽略其余值。相反,如果元组太短,则假定其余阈值处于最大范围。 invert - 反转阈值操作,像素在已知颜色范围之外进行匹配,而非在已知颜色范围内。 roi - 感兴趣区域的矩形元组(x,y,w,h)。如果未指定,ROI即整个图像的图像矩形。操作范围仅限于 roi 区域内的像素。 x_stride - 查找某色块时需要跳过的x像素的数量。找到色块后,直线填充算法将精确像素。若已知色块较大,可增加 x_stride 来提高查找色块的速度。 y_stride - 查找某色块时需要跳过的y像素的数量。找到色块后,直线填充算法将精确像素。若已知色块较大,可增加 y_stride 来提高查找色块的速度。 area_threshold - 若一个色块的边界框区域小于 area_threshold ,则会被过滤掉。 pixel_threshold - 若一个色块的像素数小于 pixel_threshold ,则会被过滤掉。 merge - 若为True,则合并所有没有被过滤掉的色块,这些色块的边界矩形互相交错重叠。 margin - 可在相交测试中用来增大或减小色块边界矩形的大小。例如:边缘为1、相互间边界矩形为1的色块将被合并。

合并色块使颜色代码追踪得以实现。每个色块对象有一个代码值 code ,该值为一个位向量。 例如:若您在 image.find_blobs 中输入两个颜色阈值,则第一个阈值代码为1,第二个代码为2(第三个代码为4,第四个代码为8,以此类推)。 合并色块对所有的code使用逻辑或运算,以便您知道产生它们的颜色。这使得您可以追踪两个颜色,若您用两种颜色得到一个色块对象,则可能是一种颜色代码。

若您使用严格的颜色范围,无法完全追踪目标对象的所有像素,您可能需要合并色块。最后,若您想要合并色块,但不想两种不同阈值颜色的色块被合并,只需分别两次调用 image.find_blobs ,不同阈值色块就不会被合并。

blob 对象为字典类型,含关键字如下述:

关键字 说明 corners 返回对象的4个角的4 (x,y)元组列表。从左上方开始按顺时针顺序返回角。 min_corners 返回包含4个角的4 (x,y)元组的列表,该元组的边界大于该Blob的最小面积矩形的边界。 与 blob.corners() 不同,最小面积矩形的角并不一定位于blob上。 x 色块的边界框的x坐标(int) y 色块的边界框的y坐标(int) w 色块的边界框的宽 h 色块的边界框的高 pixels 属于色块(int)一部分的像素数量 cx 色块(int)的中心x位置 cy 色块(int)的中心y位置 rotation 返回色块的旋转(单位:弧度)。如果色块类似铅笔或钢笔,那么这个值就是介于0-180之间的唯一值。 如果这个色块圆的,那么这个值就没有效用。 rotation_deg 以度为单位返回blob的旋转角度。 rotation_rad 以弧度为单位返回blob的旋转度数。这个方法比 blob.rotation() 更具描述性。 code 返回一个32位的二进制数字,其中为每个颜色阈值设置一个位,这是色块的一部分。 例如,如果您通过 image.find_blobs 来寻找三个颜色阈值,这个色块可以设置为0/1/2位。 注意:除非以 merge=True 调用 image.find_blobs ,否则每个色块只能设置一位。 那么颜色阈值不同的多个色块就可以合并在一起了。 您也可以用这个方法以及多个阈值来实现颜色代码跟踪。 count 返回合并到此Blob中的Blob数。 perimeter 返回该blob周长上的像素数。 roundness 返回0到1之间的值,表示对象的圆度。一个圆将是1。 elongation 返回一个介于0和1之间的值,该值表示对象的长度(不是圆形)。一条线将是1。 area 返回色块周围的边框面积(w * h) density 返回这个色块的密度比。这是在色块边界框区域内的像素点的数量。 总的来说,较低的密度比意味着这个对象的锁定得不是很好。 结果在0和1之间。 Image.find_apriltags()¶

查找图像内的所有AprilTag, 并返回一个 image.apriltag 对象的列表。请参考 image.apriltag 对象以获取更多信息。

与二维码相比,AprilTags可在更远距离、较差光线和更扭曲的图像环境下被检测到。 AprilTags可应对所有种类的图像失真问题,而二维码并不能。也就是说,AprilTags只能将数字ID编码作为其有效载荷。 AprilTag使用的是 TAG36H11 。

apriltag 对象为字典类型,含关键字如下述:

关键字 说明 corners 返回对象的4个角的4 (x,y)元组列表。从左上方开始按顺时针顺序返回角。 x AprilTag的边界框的x坐标(int) y AprilTag的边界框的y坐标(int) cx AprilTag(int)的中心x位置 cy AprilTag(int)的中心y位置 id 返回AprilTag的数字ID。TAG36H11 -> 0 to 586。 rotation 返回以弧度计的AprilTag的旋度(int)。 decision_margin 返回AprilTag匹配的色饱和度(取值0.0 - 1.0),其中1.0为最佳。 hamming 返回AprilTag的可接受的数位误差数值。 goodness 返回AprilTag图像的色饱和度(取值0.0 - 1.0),其中1.0为最佳。 x_translation 返回距离摄像机x方向的变换,距离的单位未知。 y_translation 返回距离摄像机y方向的变换,距离的单位未知。 z_translation 返回距离摄像机z方向的变换,距离的单位未知。 x_rotation 返回以弧度计的AprilTag在X平面上的旋度。例:目视AprilTag,从左至右移动摄像头。 y_rotation 返回以弧度计的AprilTag在Y平面上的旋度。例:目视AprilTag,从上至下移动摄像头。 z_rotation 返回以弧度计的AprilTag在Z平面上的旋度。例:目视AprilTag,旋转摄像头。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3