Maixll-Dock 图像颜色模式

Maixll-Dock 图像颜色模式

  • 图像颜色模式
    • 灰度图像
    • 黑白图像
    • RGB图像
  • image模块:颜色模式相关
  • 基础案例
    • 查找区域最大颜色值
    • 查找色块
      • 全图查找
      • 范围查找
      • 其他模式查找色块

我们了解了图像的大小,现在来处理一下图像的颜色。毕竟我们后面有颜色识别,先了解一下图像的颜色相关知识吧~

咸鱼出品,能用就行~
选用版本:v831-m2dock-maixpy3-0.5.0-20220601


图像颜色模式

灰度图像

一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。

灰度图像是一个数据占8位的颜色图像位深度就是8,用28表示,每个存储1个像素一般可以存放8位二进制,它含会有28=256种颜色(或者256种灰度等级)。那么灰度图像中每个像素点就会有1个数值,这个数值即为像素值(范围0-255).
Maixll-Dock 图像颜色模式_第1张图片
下图是灰度图像
Maixll-Dock 图像颜色模式_第2张图片
如果用0~255数值表示,灰度图像就转化为了数字图像

Maixll-Dock 图像颜色模式_第3张图片
同理呀,按照数字图像,把对应的像素值图上对应的灰白灰颜色,我们就会将其转换为对应的灰度图。

数字图像:
是以二维数字组形式表示的图像
数字图像的数据可以用矩阵来表示,这个矩阵表示形式如下。
Maixll-Dock 图像颜色模式_第4张图片
图像的坐标和现实的坐标有些不一样,相对图像来说,左上角为图像坐标的原点,横纵轴依然是X轴Y轴,不同的是,Y轴是反方向的。相应的宽就是图像X轴的长度,高是图像的Y轴的长度。在视觉工具使用中要注意图像坐标系统。

注意:为了表示像素之间的相对和绝对位置,通常要对像素位值坐标进行约定。(玩硬件的时候按照约定的坐标去获取值即可。X轴Y轴互换也不要紧,只要你使用前约定好就行。)

黑白图像

又叫二值图像,即像素只有黑,白两种颜色。0表示黑色,1表示白色。

RGB图像

三原色RGB(红绿蓝)是计算机显示彩色图像时采用最多的模型。3通道(每个通道28)2(3*8)约为为1600万种颜色。
Maixll-Dock 图像颜色模式_第5张图片

Maixll-Dock 图像颜色模式_第6张图片

image模块:颜色模式相关

一、导入模块

from maix import image

#maix_vision  类是对于图像的一系列操作方法的集合

maix_vision.get_blob_color(roi = (0, 0, 0, 0), critical = 0, co = 0)
# 统计函数,得到图像选定区域的最大颜色值.
 1. roi 是选定区域的矩形元组(x,y,w,h)
 2. critical为返回值区域范围,简单将统计到的最大颜色值和critical相加或相减,当为0,返回原来的色值.
 3. co为返回的颜色空间模型.可选为
	-0 rgb
	-1 lab
    -2 hsv
返回值:
- 当co为0时返回[r, g, b]
- 当co为1时返回[L - critical, A - critical, B - critical, L + critical, A + critical, B + critical]
当co为2时同1
______________________________________________________________________________________________
maix_vision.find_blobs(thresholds, roi = (0,0,0,0), x_stride = 2, y_stride = 2, invert = 0, area_threshold = 10, pixels_threshold = 10, merge = 0, margin = 0, tilt = 0, co = 1)
# 查找指定色块,返回色块位值列表。
1. thresholds 必须是元组列表. [(minL, minA, minB, maxL, maxA, maxB)]
2. roi 是感兴趣区域的矩形元组(x,y,w,h)
3. x_stride 是查找某色块时需要跳过的x像素的数量。 若已知色块较大,可增加 x_stride 来提高查找色块的速度。
4. y_stride 是查找某色块时需要跳过的y像素的数量。 若已知色块较大,可增加 y_stride 来提高查找色块的速度。
5. invert 反转阈值操作,像素在已知颜色范围之外进行匹配,而非在已知颜色范围内。
6. 若一个色块的边界框区域小于 area_threshold ,则会被过滤掉。
7. 若一个色块的像素数小于 pixels_threshold ,则会被过滤掉。
8. merge 若为True,则合并所有没有被过滤掉的色块,这些色块的边界矩形互相交错重叠。
9. margin 可在相交测试中用来增大或减小色块边界矩形的大小。例如:边缘为1、相互间边界矩形为1的色块将被合并。
10.tilt设置是否查找最小斜矩形框,0则不查找
11.co为返回的颜色空间模型.可选为,如果不是特殊需要,请保持默认
	-0 rgb
	-1 lab
	-2 hsv
	-3 灰度
返回值:[{'x': 140, 'y': 88, 'w': 15, 'h': 7, 'pixels': 43, 'cx': 147, 'cy': 91}]

(x, y, w, h)色块的外框,pixels,色块的像素大小,(cx, cy)色块的中心点.

lab模型(写过了有兴趣自己看):LAB色彩模型

Maixll-Dock 图像颜色模式_第7张图片

基础案例

查找区域最大颜色值

from maix import image
img=image.open('root/app/kxian.png').resize(160,240)
a=img.get_blob_color(roi = (10, 20, 20, 40), critical = 0, co = 0)
print(a)      # rgb模式显示
b=img.get_blob_color(roi = (10, 20, 20, 40), critical = 0, co = 1)
print(b)      # lab模式显示
c=img.get_blob_color(roi = (10, 20, 20, 40), critical = 0, co = 2)
print(c)      # hsv模式显示

Maixll-Dock 图像颜色模式_第8张图片

查找色块

全图查找

注意:roi按默认设置即可。

# 初始化(默认的)
maix_vision.find_blobs(thresholds, roi = (0,0,0,0), x_stride = 2, y_stride = 2, invert = 0, area_threshold = 10, pixels_threshold = 10, merge = 0, margin = 0, tilt = 0, co = 1)
# thresholds 检测目标
from maix import image
img=image.open('root/app/kxian.png').resize(160,240)
green = [(28,-36,-14,68,-5,15)] 
a=img.find_blobs(green)
print(a)

Maixll-Dock 图像颜色模式_第9张图片

范围查找

roi设置范围

from maix import image
img=image.open('root/app/kxian.png').resize(160,240)
green = [(28,-36,-14,68,-5,15)] 
a=img.find_blobs(green , roi = (10,10,20,20))  # roi设置范围
print(a)

Maixll-Dock 图像颜色模式_第10张图片

其他模式查找色块

参数rgb,co=0

from maix import image
img=image.open('root/app/kxian.png').resize(160,240)
green = [(0,0,0)]   # 参数也为rgb
a=img.find_blobs(green,co=0)  # co=0 rgb模式
print(a)

Maixll-Dock 图像颜色模式_第11张图片

你可能感兴趣的:(#,V831,硬件,计算机视觉,人工智能,python)