600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > openCV-python实现颜色识别

openCV-python实现颜色识别

时间:2020-02-24 21:26:45

相关推荐

openCV-python实现颜色识别

本文将介绍使用OpenCV实现颜色识别的详细步骤 + 代码。

背景介绍

在截取出模板匹配到的logo区域之后,需要判断logo是什么颜色。本案例中要识别的对象是纯色的所以适用下面的颜色识别方法,有不同需求的请斟酌借鉴。

原理介绍

数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。相对于RGB空间,HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比。所以我们在颜色检测时,选用HSV图像。

例如主要区分2种颜色:蓝色和橘色。

得到的阈值如下:

lower_blue = np.array([100, 43, 46])upper_blue = np.array([124, 255, 255])lower_orange = np.array([11, 43, 46])upper_orange = np.array([25, 255, 255])

实现代码

颜色识别代码如下:

def recognize(frame):width = frame.shape[1]height = frame.shape[0]hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 根据阈值构建掩膜mask_blue = cv.inRange(hsv, lower_blue, upper_blue)mask_orange = cv.inRange(hsv, lower_orange, upper_orange) # 对mask进行操作--黑白像素点统计 因为不同颜色的掩膜面积不一样# 记录黑白像素总和blue_white = 0blue_black = 0orange_white = 0orange_black = 0# 计算每一列的黑白像素总和for i in range(width):for j in range(height):if mask_blue[j][i] == 255:blue_white += 1if mask_blue[j][i] == 0:blue_black += 1if mask_orange[j][i] == 255:orange_white += 1if mask_orange[j][i] == 0:orange_black += 1color_list = ['blue', 'orange']num_list = [blue_white, orange_white]ret = color_list[num_list.index(max(num_list))]return ret

调用上面的函数就可以输出当前识别到的颜色标签。

缺点是识别的颜色越多代码计算量越大,效率低。

参考链接:/Aiden_yan/article/details/118459034《opencv-python车牌颜色判断》-三个臭皮姜

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。