Python OpenCV实现红绿颜色识别与矩形框绘制

桃夭
桃夭
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何使用Python和OpenCV库实现红绿两色识别。通过cv2.createTrackbar()调整HSV阈值,利用cv2.adaptiveThreshold()增强稳定性,并结合cv2.findContours()与cv2.boundingRect()检测物体轮廓,最终使用cv2.rectangle()绘制反向颜色矩形框以凸显识别结果。

颜色空间转换与阈值调整

首先进行颜色空间转换,将图像从RGB格式转换为HSV格式,以便更准确地区分颜色。

为了精确调整红色和绿色的HSV阈值范围,使用cv2.createTrackbar()函数创建了六个滚动条进行参数调节。


#创建HSV最低滚动条
cv2.createTrackbar('H_min','image',35,180,nothing)
cv2.createTrackbar('S_min','image',43,255,nothing)
cv2.createTrackbar('V_min','image',46,255,nothing)

#创建HSV最高滚动条
cv2.createTrackbar('H_max','image',0,180,nothing)
cv2.createTrackbar('S_max','image',255,255,nothing)
cv2.createTrackbar('V_max','image',255,255,nothing)

调整后的实际效果如图所示。

颜色识别与轮廓检测

接下来进行颜色识别并绘制矩形框。

在确定颜色阈值后,即可开始进行颜色识别处理。

为了提高识别的稳定性,在代码中引入了自适应阈值处理机制。

具体实现代码为:th_img = cv2.adaptiveThreshold(mask,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,5,2)

矩形框绘制与结果展示

随后执行矩形框绘制操作。

使用cv2.findContours()函数来检测物体的轮廓。

接着利用cv2.boundingRect()函数查找最小外接矩形框。

最后使用cv2.rectangle()函数将矩形框绘制在图像上。


contours_green,hierarchy = cv2.findContours(th_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contours_red,hierarchy = cv2.findContours(th_red,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for red in contours_red:
 x_red,y_red,w_red,h_red = cv2.boundingRect(red)
 if w_red>width|h_red>height:
 cv2.rectangle(img,(x_red,y_red),((x_red+h_red),(y_red+w_red)),(0,255,0),1)
for red in contours_red:
 x_red,y_red,w_red,h_red = cv2.boundingRect(red)
 if w_red>width|h_red>height:
 cv2.rectangle(img,(x_red,y_red),((x_red+h_red),(y_red+w_red)),(0,255,0),1)

为了更直观地凸显颜色差异,采用绿色矩形框标注红色物体,同时使用红色矩形框标注绿色物体。

以上即为Python OpenCV实现红绿两色识别的完整操作流程,供读者参考。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表