openmv4系列4----图像处理

openmv4系列4----图像处理

sensor模块,用于设置感光元件的参数。

一、感光元件的使用

import sensor#引入感光元件的模块

# 设置摄像头
sensor.reset()#初始化感光元件
sensor.set_pixformat(sensor.RGB565)#设置为彩色
sensor.set_framesize(sensor.QVGA)#设置图像的大小
sensor.skip_frames()#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。

# 一直拍照
while(True):
    img = sensor.snapshot()#拍摄一张照片,img为一个image对象
  • 初始化
    sensor.reset() 初始化感光元件
  • 设置彩色/黑白
    sensor.set_pixformat() 设置像素模式。
    sensor.GRAYSCALE: 灰度,每个像素8bit。
    sensor.RGB565: 彩色,每个像素16bit。
  • 设置图像大小
    sensor.set_framesize() 设置图像的大小
    sensor.QQCIF: 88x72
    sensor.QCIF: 176x144
    sensor.CIF: 352x288
    sensor.QQSIF: 88x60
    sensor.QSIF: 176x120
    sensor.SIF: 352x240
    sensor.QQQQVGA: 40x30
    sensor.QQQVGA: 80x60
    sensor.QQVGA: 160x120
    sensor.QVGA: 320x240
    sensor.VGA: 640x480
    sensor.HQQQVGA: 80x40
    sensor.HQQVGA: 160x80
    sensor.HQVGA: 240x160
    sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())
    sensor.B64X64: 64x64 用于帧差异 image.find_displacement())
    sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())
    sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())
    sensor.LCD: 128x160 (用于LCD扩展板)
    sensor.QQVGA2: 128x160 (用于LCD扩展板)
    sensor.WVGA: 720x480 (用于 MT9V034)
    sensor.WVGA2:752x480 (用于 MT9V034)
    sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)
    sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)
    sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)
    sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)
    sensor.HD: 1280x720 (仅用于 OV5640 感光元件)
    sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)
    sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)
    sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)
    sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)
    sensor.WQXGA2: 2592x1944 (仅用于 OV5640 感光元件)
  • 跳过一些帧
    sensor.skip_frames(n=10) 跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
  • 获取一张图像
    sensor.snapshot() 拍摄一张照片,返回一个image对象。
  • 自动增益
    sensor.set_auto_gain()

自动增益开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动增益。

  • 自动白平衡
    sensor.set_auto_whitebal()

自动白平衡开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动白平衡。

  • 自动曝光
    sensor.set_auto_exposure(enable[, exposure_us])

enable 打开(True)或关闭(False)自动曝光。默认打开。 如果 enable 为False, 则可以用
exposure_us设置一个固定的曝光时间(以微秒为单位)。

  • 设置窗口ROI
    sensor.set_windowing(roi)
    ROI:Region Of Interest,图像处理中的术语“感兴趣区”。就是在要处理的图像中提取出的要处理的区域。
    在这里插入图片描述
sensor.set_framesize(sensor.VGA) # 高分辨率
sensor.set_windowing((640, 80)) #取中间的640*80区域

roi的格式是(x, y, w, h)。

设置图像翻转

  • sensor.set_hmirror(True)
    水平方向翻转

  • sensor.set_vflip(True)
    垂直方向翻转

二、图像的基本运算
在这里插入图片描述
1.获取/设置像素点

  • 我们可以通过image.get_pixel(x, y)方法来获取一个像素点的值。
    image.get_pixel(x, y)

对于灰度图: 返回(x,y)坐标的灰度值。
对于彩色图: 返回(x,y)坐标的(r,g,b)的tuple。

  • 同样,我们可以通过image.set_pixel(x, y, pixel)方法,来设置一个像素点的值。
    image.set_pixel(x, y, pixel)

对于灰度图: 设置(x,y)坐标的灰度值。
对于彩色图: 设置(x,y)坐标的(r,g,b)的值。

2.获取图像的宽度和高度

  • 返回图像的宽度(像素)
    image.width()

  • 返回图像的高度(像素)
    image.height()

  • 灰度图会返回 sensor.GRAYSCALE,彩色图会返回 sensor.RGB565。
    image.format()

  • 返回图像的大小(byte)
    image.size()

3.图像的运算

  • image.invert()
    取反,对于二值化的图像,0(黑)变成1(白),1(白)变成0(黑)。

注: 图像可以是另一个image对象,或者是从
(bmp/pgm/ppm)文件读入的image对象。两个图像都必须是相同的尺寸和类型(灰度图/彩色图)。

  • image.nand(image)
    与另一个图片进行与非(NAND)运算。

  • image.nor(image)
    与另一个图片进行或非(NOR)运算。

  • image.xor(image)
    与另一个图片进行异或(XOR)运算。

  • image.xnor(image)
    与另一个图片进行异或非(XNOR)运算。

  • image.difference(image)
    从这张图片减去另一个图片。比如,对于每个通道的每个像素点,取相减绝对值操作。这个函数,经常用来做移动检测。

三、图像的统计信息

1.ROI
在这里插入图片描述

roi的格式是(x, y, w, h)的tupple.

x:ROI区域中左上角的x坐标
y:ROI区域中左上角的y坐标
w:ROI的宽度
h:ROI的高度

2.Statistics

image.get_statistics(roi=Auto)

其中roi是目标区域。注意,这里的roi,bins之类的参数,一定要显式地标明,例如:

img.get_statistics(roi=(0,0,10,20))

如果是 img.get_statistics((0,0,10,20)),ROI不会起作用。

  • statistics.mean() 返回灰度的平均数(0-255) (int)。你也可以通过statistics[0]获得。

  • statistics.median() 返回灰度的中位数(0-255) (int)。你也可以通过statistics[1]获得。

  • statistics.mode() 返回灰度的众数(0-255) (int)。你也可以通过statistics[2]获得。

  • statistics.stdev() 返回灰度的标准差(0-255) (int)。你也可以通过statistics[3]获得。

  • statistics.min() 返回灰度的最小值(0-255) (int)。你也可以通过statistics[4]获得。

  • statistics.max() 返回灰度的最大值(0-255) (int)。你也可以通过statistics[5]获得。

  • statistics.lq() 返回灰度的第一四分数(0-255) (int)。你也可以通过statistics[6]获得。

  • statistics.uq() 返回灰度的第三四分数(0-255) (int)。你也可以通过statistics[7]获得。

上面的是灰度的值,接下来的

  • l_mean,l_median,l_mode,l_stdev,l_min,l_max,l_lq,l_uq,
  • a_mean,a_median,a_mode,a_stdev,a_min,a_max,a_lq,a_uq,
  • b_mean,b_median,b_mode,b_stdev,b_min,b_max,b_lq,b_uq,

是LAB三个通道的平均数,中位数,众数,标准差,最小值,最大值,第一四分数,第三四分数。

3.举例

检测左上方的区域中的颜色值。

import sensor, image, time

sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(10) # 跳过10帧,使新设置生效
sensor.set_auto_whitebal(False)               # Create a clock object to track the FPS.

ROI=(80,30,15,15)

while(True):
    img = sensor.snapshot()         # Take a picture and return the image.
    statistics=img.get_statistics(roi=ROI)
    color_l=statistics.l_mode()
    color_a=statistics.a_mode()
    color_b=statistics.b_mode()
    print(color_l,color_a,color_b)
    img.draw_rectangle(ROI)
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值