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

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

本文介绍如何使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。