之前写过一篇VC++中使用OpenCV进行颜色检测的博文,当然使用opencv-python库也可以实现。
在Python中使用opencv-python库进行颜色检测非常简单,首选读取一张彩色图像,并调用函数imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV);
函数将原图img转换成HSV图像imgHSV,再设置好HSV三个分量的上限和下限值,调用inRange
函数imask = cv2.inRange(imgHSV,lower,upper)
将HSV色彩图像转换成掩码图,掩码图中只有黑白二值图像,从而达到颜色检测的目的。颜色检测通常可以用于物体检测和跟踪中,尤其在不同的图像和物体中根据特定的颜色去筛选出某个物体。
通过学习油管博主murtazahassan的视频LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer Vision,里面第7个OpenCV示例将到如何从一副兰博基尼的轿车图像中进行颜色检测,相关代码地址为:Learn-OpenCV-in-3-hours
如下所示:
运行结果如下图所示:
matplotlib
库将多幅图像在一张图上显示当然我们可以替换掉上面的stackImages(scale,imgArray),借助
matplotlib`库将多幅图像在一张图上显示,相应的代码如下:
在VScode
中运行结果如下图所示:
注意:由于python-opencv
中彩色图像默认是BGR
,matplotlib
库中默认是RGB
,所以使用matplotlib
库显示图像时,需要对原图像(BGR)使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
函数进行转换,不然图像显示不正确。如下图所示: