OpenCV和Python颜色检测(P2)
书接上文
以下是运行脚本的程序:(要在终端输入呦~)
如果您的环境配置正确(这意味着您安装了带有Python绑定的OpenCV),您应该将其视为输出映像:

正如你所见,红色口袋妖怪墨盒很容易被检测到!
现在让我们试试蓝色的:

不,没问题!
黄色版本也有类似的故事:

最后,还可以找到灰色Game Boy盒带的轮廓:

通过颜色校正提高颜色检测精度

在本教程中,您学习了如何通过硬编码上下RGB颜色范围来执行颜色校正。
假设你有一个包含1000幅图像的数据集,并被告知找到RGB值分别在(17、15、100)和(50、56、200)范围内的所有“红色”对象。
如果您的整个图像数据集是在受控照明条件下拍摄的,并且每个图像的照明都相同,那么这不是一项困难的任务——您可以使用上面提到的硬编码RGB值。
但是……假设你的图像数据集不是在受控的光照条件下拍摄的。其中一些是用荧光灯拍摄的,另一些是在阳光明媚的时候被带到室外拍摄的,而另一些则是在黑暗沉闷的时候拍摄的。
这里的重点是,照明条件对输出像素值有很大影响。
(以下是文章链接:https://www.pyimagesearch.com/2021/04/28/opencv-color-spaces-CV2-cvtcolor/)
在不同的光照下,颜色可能看起来非常不同,如果发生这种情况,硬编码的RGB下限和上限范围将失败。
一个潜在的解决方案是使用一个不同的颜色空间,它可以更好地模仿人类对颜色的感知——HSV和L*a*b*颜色空间是很好的选择。
更好的选择是使用颜色校正卡。将一张卡片(如上图5所示)放置在包含我们正在捕获的对象的场景中,然后通过以下方式对所有图像进行后期处理:
检测颜色校正卡
确定色块区域
执行直方图匹配以将颜色空间从一个图像转移到另一个图像
通过这种方式,您可以帮助确保所有图像的颜色一致,即使它们可能是在不同的照明条件下拍摄的。
为了进一步了解这项技术,我建议阅读以下两个教程:
与OpenCV、scikit图像和Python匹配的直方图
(https://www.pyimagesearch.com/2021/02/08/histogram-matching-with-opencv-scikit-image-and-python/)
使用OpenCV和Python进行自动颜色校正
(https://www.pyimagesearch.com/2021/02/15/automatic-color-correction-with-opencv-and-python/)