open cv2有150种颜色通道转换的方法,使用最广的有两种:BGR↔Gray,BGR↔HSV,关于其他的通道转换方法,可以使用以下代码进行获取:
import cv2
dir_cv2=dir(cv2)
for i in dir_cv2:
if i.startswith('COLOR_'):
print(i)
运行得到的一部分结果:
COLOR_BAYER_BG2BGR
COLOR_BAYER_BG2BGRA
COLOR_BAYER_BG2BGR_EA
COLOR_BAYER_BG2BGR_VNG
COLOR_BAYER_BG2GRAY
COLOR_BAYER_BG2RGB
COLOR_BAYER_BG2RGBA
.
.
.
注意:对于HSV(H:色相,就是区分不同颜色的属性;S:饱和度;V:明度),open cv的色相范围是[0,179],饱和度和明度都是[0,255]
颜色通道转化
使用函数:cv2.cvtColor(img,transformation_method)
img:源图像
transformation_method:也就是图像颜色通道转化的方向,就是上面提到的那150种方法。cv2.COLOR_BGR2GRAY是用于从BGR格式转化为Gray格式。类似的,cv2.COLOR_BGR2HSV是从BGR转化为HSV格式。
颜色追踪
因为HSV通道对于图片中对象的寻找能力强于BGR,但是我们一般接触到的图像是BGR图像,怎么样把特定的BGR的值转化为HSV值呢?
下面的例子是在HSV通道中找出在BGR中纯绿色代表的HSV值:
green = np.uint8([[[0,255,0 ]]])
#创建一个三维数组(uint8表示数组的元素都是无符号一个字节的数,范围是0-255),由于green.shape=(1,1,3),这个数组就可以视为一个点,并且这点的三个通道(BGR)分别是0,255,0,没有红色和蓝色成分并且绿色成分是满的,也就是一个绿色的点
hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV) #转换颜色通道
print (hsv_green)
未完。。。