在全志H616核桃派上实现USB摄像头的OpenCV颜色检测
[复制链接]
在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。
颜色检测核心api
按照惯例,先要介绍一下opencv中常用的hsv像素格式。颜色还是那个颜色,只是描述颜色用的参数变了。h代表色调,s代表饱和度,v代表明度,比使用rgb格式更方便计算与思考。
opencv中也提供了将rgb bgr等转为hsv图片的api:
cv2.inRange,给定一个要检测的hsv颜色范围,返回一张黑白图。将hsv值在该范围内的像素点全部变为白色,不在的则为黑色。
findContours,传入黑白图像,寻找所有轮廓。返回两个列表,contours里是找到的所有轮廓,hierarchy是那些轮廓之间的相对位置关系
minAreaRect,传入一个轮廓,计算最小外接矩形
drawContours, 绘制轮廓
基本测试代码
EEWORLDLINKTK1
由于摄像头拍出来的噪点很多,而物体由于本身材质反光导致拍出来也有一些部分的颜色变了。所以实际应用时需要对图像进行一些滤波模糊化处理。或是直接对生成后的黑白图像进行一定膨胀与收缩。
EEWORLDLINKTK2
再把各个参数做成pyqt窗口的选项,查看各项搭配后的效果,快速找到合适的参数选择。
|