0 引言
使用opencv进行视觉识别处理时,大多数函数需要图片为单通道(灰色),同时我们也可以通过cv.inRange、cv.bitwise_and等函数的操作,完成以颜色为特征的图像提取,达到一定程度上的图像识别。(完整代码附于文末,其中本文未提到的函数,在本专栏前几节均有提到,欢迎大家去翻阅)
1 先简单了解一下颜色空间
颜色空间主要包括BGR、HSV、HSL、GRAY等等,还有很多颜色空间,大家感兴趣可以去搜索了解了解。但博主目前最主要使用到的就是上述4种。
BGR:三通道,蓝色(B)、绿色(G)、红色(R)
HSV:三通道,色调(H),饱和度(S),明度(V)
HSL:三通道,色相(H)、饱和度(S)、亮度(L)
GRAY:单通道,灰度空间
注:三通道的颜色空间由三个参数共同作用成一种颜色。
2 将BGR转换为HSV
对于色彩空间的转换,可以使用函数cv.cvtColor(src, code),该函数输入值为两个参数,src是指处理的对象窗口,code是指颜色空间转换的类型:
例cv.COLOR_BGR2GRAY,color自然指颜色,而BGR2GRAY与BGR to GRAY同义,就是告诉计算机将BGR色彩空间转换为灰度空间。
本节将BGR转换为HSV具体程序如下:
import cv2 as cv
import numpy as np
cap=cv.VideoCapture(0)
while(1):
#读取帧
_,frame=cap.read()
#转换颜色空间BGR到HSV
hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
3 提取图片中的指定颜色
提取颜色有两个步骤,首先是指定我们要提取什么颜色,然后进行像素对比提取。指定颜色我们可以给一个范围,比如说我们想要提取绿色,那么我们给出范围(最大值与最小值