opencv 红绿灯检测
这个是参考的,先用颜色分隔,再用霍夫圆检测,抛砖引玉。
import cv2
import numpy as np
font = cv2.FONT_HERSHEY_SIMPLEXimg = cv2.imread(r"E:\jinji\20210315\xiangdui\100cm\rgb\0010.jpg")
cv2.imshow("ooo",img)
cv2.waitKey()
cimg = img
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# color range
lower_red1 = np.array([0, 100, 100])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([180, 255, 255])
lower_green = np.array([40, 50, 50])
upper_green = np.array([90, 255, 255])
# lower_yellow = np.array([15,100,100])
# upper_yellow = np.array([35,255,255])
lower_yellow = np.array([15, 150, 150])
upper_yellow = np.array([35, 255, 255])
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
maskg = cv2.inRange(hsv, lower_green, upper_green)cv2.imshow("asfy",maskg)
cv2.waitKey()
masky = cv2.inRange(hsv, lower_yellow, upper_yellow)
maskr = cv2.add(mask1, mask2)size = img.shape
# print size# hough circle detect
r_circles = cv2.HoughCircles(maskr, cv2.HOUGH_GRADIENT, 1, 80,param1=50, param2=10, minRadius=0, maxRadius=30)g_circles = cv2.HoughCircles(maskg, cv2.HOUGH_GRADIENT, 1, 60,param1=50, param2=10, minRadius=0, maxRadius=30)y_circles = cv2.HoughCircles(masky, cv2.HOUGH_GRADIENT, 1, 30,param1=50, param2=5, minRadius=0, maxRadius=30)# traffic light detect
r = 5
bound = 4.0 / 10
if r_circles is not None:r_circles = np.uint16(np.around(r_circles))for i in r_circles[0, :]:if i[0] > size[1] or i[1] > size[0] or i[1] > size[0] * bound:continueh, s = 0.0, 0.0for m in range(-r, r):for n in range(-r, r):if (i[1] + m) >= size[0] or (i[0] + n) >= size[1]:continueh += maskr[i[1] + m, i[0] + n]s += 1if h / s > 50:cv2.circle(cimg, (i[0], i[1]), i[2] + 10, (0, 255, 0), 2)cv2.circle(maskr, (i[0], i[1]), i[2] + 30, (255, 255, 255), 2)cv2.putText(cimg, 'RED', (i[0], i[1]), font, 1, (255, 0, 0), 2, cv2.LINE_AA)if g_circles is not None:g_circles = np.uint16(np.around(g_circles))for i in g_circles[0, :]:if i[0] > size[1] or i[1] > size[0] or i[1] > size[0] * bound:continueh, s = 0.0, 0.0for m in range(-r, r):for n in range(-r, r):if (i[1] + m) >= size[0] or (i[0] + n) >= size[1]:continueh += maskg[i[1] + m, i[0] + n]s += 1if h / s > 100:cv2.circle(cimg, (i[0], i[1]), i[2] + 10, (0, 255, 0), 2)cv2.circle(maskg, (i[0], i[1]), i[2] + 30, (255, 255, 255), 2)cv2.putText(cimg, 'GREEN', (i[0], i[1]), font, 1, (255, 0, 0), 2, cv2.LINE_AA)if y_circles is not None:y_circles = np.uint16(np.around(y_circles))for i in y_circles[0, :]:if i[0] > size[1] or i[1] > size[0] or i[1] > size[0] * bound:continueh, s = 0.0, 0.0for m in range(-r, r):for n in range(-r, r):if (i[1] + m) >= size[0] or (i[0] + n) >= size[1]:continueh += masky[i[1] + m, i[0] + n]s += 1if h / s > 50:cv2.circle(cimg, (i[0], i[1]), i[2] + 10, (0, 255, 0), 2)cv2.circle(masky, (i[0], i[1]), i[2] + 30, (255, 255, 255), 2)cv2.putText(cimg, 'YELLOW', (i[0], i[1]), font, 1, (255, 0, 0), 2, cv2.LINE_AA)cv2.imshow('detected results', cimg)# cv2.imshow('maskr', maskr)
# cv2.imshow('maskg', maskg)
# cv2.imshow('masky', masky)cv2.waitKey(0)
cv2.destroyAllWindows()
opencv 红绿灯检测相关推荐
- 计算机视觉OpenCV红绿灯检测
红绿灯检测 本设计中红绿灯检测程序主要有detectColor.py文件和TLState.py两个文件. 在detectColor.py文件中主要是检测被TLState.py分割出来的灯的颜色,首先利 ...
- 【OpenCV】红绿灯检测C++Demo实现
很久以来一直想实现红绿灯检测,今天它来了. 文章目录 原理 代码实现 打包程序为exe 原理 OpenCV好强,能够提取红绿灯的轮廓,并根据颜色空间判断红绿,不依赖深度学习算法也能做到可用的效果/de ...
- python红绿灯检测opencv识别红绿灯信号灯检测
python红绿灯检测opencv识别红绿灯信号灯检测 交通信号灯的检测与识别是无人驾驶与辅助驾驶必不可少的一部分,其识别精度直接关乎智能驾驶的安全.一般而言,在实际的道路场景中采集的交通信号灯图像具 ...
- agx 安装ros opencv_基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)
前言本来想直接用百度智能车比赛的数据集训练,但是发现在ROS中搭建红绿灯模型和提供的数据集在颜色亮度外形上都有点差别- -无奈从创建数据集开始.目录:基于paddledetection在ROS中搭建红 ...
- Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测
Pyhton,OpenCV对象检测之--Haar级联人脸及眼睛检测 1. 效果图 2. 原理 2.1 Haar人脸检测原理 2.2 Haar级联预训练的模型 3. 源码 3.1 图像面部及眼睛检测 3 ...
- 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)
使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...
- 如何使用 OpenCV Python 检测颜色
作者 | 小白 来源 | 小白学视觉 在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块. pip install openc ...
- OpenCV行人检测
注:本文翻译自:Pedestrian Detection OpenCV. 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视 ...
- OpenCV SURF检测的实例(附完整代码)
OpenCV SURF检测的实例 OpenCV SURF检测的实例 OpenCV SURF检测的实例 #include <iostream> #include "opencv2/ ...
最新文章
- 【CTF】实验吧 古典密码
- 大学的很重要的元素是圈子,是人气
- NYOJ 117 求逆序数
- 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
- C# ini文件读写函数
- .net core ——微服务内通信Thrift和Http客户端响应比较
- aws mfa 认证_如何为您的AWS账户设置多因素身份验证(MFA)
- sqlserver如何从周一计算周_纯零基础,花10周时间,完全搞定Python,有没有可能?...
- 【计算机网络】 —— 标准化工作及相关组织
- ChaiNext:主流代币回调
- 加载语音license command
- vue仿今日头条_字节跳动今日头条前端面经(4轮技术面+hr面)
- CENTOS取消锁屏功能
- JDK安装与环境变量配置
- 中兴F460电信光纤猫超级用户密码
- 快慢指针(Fast and Slow Pointers)
- CAD不支持实时调试
- 网页打开速度慢,如何解决(修改DNS)
- c/c++ 二维数组指针参数传递 矩阵计算实例
- C#与PLC通信开发之三菱FX系列PLC