irpas技术客

【Opencv小项目 1】Opencv实现简单颜色识别_「已注销」_opencv 色彩识别

网络投稿 4411

参考 Opencv简单颜色识别 Youtube教学视频BGR HSV颜色模型 步骤 一、 BGR 和 HSV 颜色模型

BGR Model BGR模型表示三种颜色通道:红、绿、蓝,采用BGR模型的图像的颜色就是由红绿蓝三种颜色加权和混合而成。 此类模型的缺点显而易见,就是很难去表达一种颜色。比如你修改了如下BGR中的B值,间接地, G和R通道的颜色也会被改变掉。

HSV Model H表示Hue颜色;S表示Saturation饱和度;V表示Value明度。 简单理解就是 H指定一种颜色,从0到360; S是白光所占程度,从0到1, 0表示饱和度最高,就是白光最多; V表示明度,从0到1, 0表示最暗

二、使用摄像头,利用HSV实现颜色识别

1. 思路 读取摄像头视频流,取窗口中间一点,将其像素值(BGR)转换为HSV,然后根据Hue来简单判断颜色。然后显示到窗口上。

2.代码

import cv2 cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH,1080) #set window's width and height cap.set(cv2.CAP_PROP_FRAME_HEIGHT,780) while True: _, frame = cap.read() hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) height,width,_ = hsv_frame.shape wx = int(width/2) # center wy = int(height/2) center_color = hsv_frame[wy,wx] #中心点HSV像素值 hue_value = center_color[0] #取Hue if hue_value < 5: color = 'RED' elif hue_value < 22: color = 'ORANGE' elif hue_value < 33: color = 'YELLOW' elif hue_value < 78: color = 'GREEN' elif hue_value <131: color = 'BLUE' elif hue_value < 167: color = 'VIOLET' else: color ='RED' bgr_color = frame[wy,wx] b,g,r = int(bgr_color[0]),int(bgr_color[1]),int(bgr_color[2]) cv2.circle(frame,(wx,wy),5,(0,255,0),3) # center (x,y) cv2.putText(frame,color,(10,50),0,1,(b,g,r),2) cv2.imshow('frame',frame) key = cv2.waitKey(1) if key ==27: break cap.release() cv2.destroyAllWindows()

3.效果


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #opencv #色彩识别 #颜色识别