跳到主要内容

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,支持格式GRAYSCALERGB565ARGB8888RGB888RGBP888

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参数失效,新增分配方式参数,总是返回一个新图像对象,图像对象的分配参数参考构造函数。

compresscompressed新增分配方式参数,总是返回一个新图像对象。 compress_for_idecompressed_for_ide新增分配方式参数,总是返回一个新图像对象。

除原生支持格式外,额外添加RGB888格式支持,其它格式不支持。

1.3.2 画图API

除原生支持格式外,额外添加ARGB8888RGB888格式支持,其它格式不支持。

1.3.3 BINARY API

binary新增分配方式参数,仅在copy=True时有效。

1.3.4 POOL API

mean_pooledmidpoint_pooled新增分配方式参数。

1.4 其它图像算法API

只支持原生格式,RGB888格式需要经过转换后才能使用。