3.9 image 图像处理 API手册#
移植于openmv
,与openmv
功能相同,详细请参考官方文档,以下仅列出与官方API的差异部分及新增API。
1. 类 Image
#
图像对象是机器视觉操作的基本对象。 image支持从micropython gc,mmz,heap,vb区域创建,REF为在参考对象内存上直接生成image。 未使用的image对象会在执行gc回收时自动释放,用户也可手动执行释放,此时申请的图像内存会立即归还到系统。
image支持的格式:
BINARY
GRAYSCALE
RGB565
BAYER
YUV422
JPEG
PNG
ARGB8888 (新增格式)
RGB888 (新增格式)
RGBP888 (新增格式)
YUV420 (新增格式)
image支持的分配区域:
ALLOC_MPGC:micropython管理的内存
ALLOC_HEAP:系统堆内存
ALLOC_MMZ:多媒体内存
ALLOC_VB:视频缓冲区
ALLOC_REF:不分配内存,使用参考对象内存
1.1 构造函数#
class image.Image(path, alloc=ALLOC_MMZ, cache=True, phyaddr=0, virtaddr=0, poolid=0, data=None)
从path中的文件创建一个图像对象,支持bmp/pgm/ppm/jpg/jpeg格式的图像文件。
class image.Image(w, h, format, alloc=ALLOC_MMZ, cache=True, phyaddr=0, virtaddr=0, poolid=0, data=None)
创建一个指定大小格式的图像对象。
w: 图像宽度
h: 图像高度
format: 图像格式
alloc: 图像创建内存位置,可选参数,默认ALLOC_MMZ
cache: 使能内存cache,可选参数,默认True
phyaddr: 图像数据的物理内存地址,仅在VB区域中创建有效
virtaddr: 图像数据的虚拟内存地址,仅在VB区域中创建有效
poolid: VB poolid,仅在VB区域中创建有效,可选参数
data: 参考对象,可用于初始化image数据,可选参数
示例:
# 在MMZ区域创建一个ARGB8888 640*480的图像:
img = image.Image(640,480,image.ARGB8888)
# 在VB区域创建一个YUV420 640*480的图像:
img = image.Image(640,480,image.YUV420,alloc=image.ALLOC_VB,phyaddr=xxx,virtaddr=xxx,poolid=xxx)
# 使用REF创建一个RGB888 640*480的图像:
img = image.Image(640,480,image.RGB888,alloc=image.ALLOC_REF,data=buffer_obj)
img = image.Image(640,480,image.RGB888,alloc=image.ALLOC_REF,data=ulab_obj)
# 立即释放图像内存
del img
gc.collect()
1.2 函数#
1.2.1 新增函数#
1.2.2 phyaddr
#
image.phyaddr()
获取image数据的物理内存地址。
1.2.3 virtaddr
#
image.virtaddr()
获取image数据的虚拟内存地址。
1.3.4 poolid
#
image.poolid()
获取image数据的VB poolid。
1.2.5 to_rgb888
#
image.to_rgb888(x_scale=1.0[, y_scale=1.0[, roi=None[, rgb_channel=-1[, alpha=256[, color_palette=None[, alpha_palette=None[, hint=0[, alloc=ALLOC_MMZ, cache=True, phyaddr=0, virtaddr=0, poolid=0]]]]]]]])
转换图像格式为RGB888,返回一个新图像对象。
除原生支持格式外,额外添加RGB888
格式支持,其它格式不支持。
1.2.6 copy_from
#
image.copy_from(src_img)
拷贝src_img到img。
1.2.7 copy_to
#
image.copy_to(dst_img)
拷贝img到dst_img。
1.2.8 to_numpy_ref
#
image.to_numpy_ref()
将image类转换成numpy类,转换完成后numpy与image指向的是同一块数据,在numpy使用完成之前不能删除image,支持格式GRAYSCALE
、RGB565
、ARGB8888
、RGB888
、RGBP888
。
1.2.9 draw_string_advanced
#
image.draw_string_advanced(x,y,char_size,str,[color, font])
draw_string
的升级版,支持中文显示,用户可通过font
自定义字体文件
1.3 差异函数#
1.3.1 图像变换API#
to_bitmap
to_grayscale
to_rgb565
to_rainbow
to_ironbow
to_jpeg
to_png
copy
crop
scale
以上API的crop
参数失效,新增分配方式参数,总是返回一个新图像对象,图像对象的分配参数参考构造函数。
compress
与compressed
新增分配方式参数,总是返回一个新图像对象。
compress_for_ide
与compressed_for_ide
新增分配方式参数,总是返回一个新图像对象。
除原生支持格式外,额外添加RGB888
格式支持,其它格式不支持。
1.3.2 画图API#
除原生支持格式外,额外添加ARGB8888
、RGB888
格式支持,其它格式不支持。
1.3.3 BINARY API#
binary
新增分配方式参数,仅在copy=True时有效。
1.3.4 POOL API#
mean_pooled
和midpoint_pooled
新增分配方式参数。
1.4 其它图像算法API#
只支持原生格式,RGB888
格式需要经过转换后才能使用。