这个是参考的,先用颜色分隔,再用霍夫圆检测,抛砖引玉。

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 红绿灯检测相关推荐

  1. 计算机视觉OpenCV红绿灯检测

    红绿灯检测 本设计中红绿灯检测程序主要有detectColor.py文件和TLState.py两个文件. 在detectColor.py文件中主要是检测被TLState.py分割出来的灯的颜色,首先利 ...

  2. 【OpenCV】红绿灯检测C++Demo实现

    很久以来一直想实现红绿灯检测,今天它来了. 文章目录 原理 代码实现 打包程序为exe 原理 OpenCV好强,能够提取红绿灯的轮廓,并根据颜色空间判断红绿,不依赖深度学习算法也能做到可用的效果/de ...

  3. python红绿灯检测opencv识别红绿灯信号灯检测

    python红绿灯检测opencv识别红绿灯信号灯检测 交通信号灯的检测与识别是无人驾驶与辅助驾驶必不可少的一部分,其识别精度直接关乎智能驾驶的安全.一般而言,在实际的道路场景中采集的交通信号灯图像具 ...

  4. agx 安装ros opencv_基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)

    前言本来想直接用百度智能车比赛的数据集训练,但是发现在ROS中搭建红绿灯模型和提供的数据集在颜色亮度外形上都有点差别- -无奈从创建数据集开始.目录:基于paddledetection在ROS中搭建红 ...

  5. Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测

    Pyhton,OpenCV对象检测之--Haar级联人脸及眼睛检测 1. 效果图 2. 原理 2.1 Haar人脸检测原理 2.2 Haar级联预训练的模型 3. 源码 3.1 图像面部及眼睛检测 3 ...

  6. 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)

    使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...

  7. 如何使用 OpenCV Python 检测颜色

    作者 | 小白 来源 | 小白学视觉 在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块. pip install openc ...

  8. OpenCV行人检测

    注:本文翻译自:Pedestrian Detection OpenCV. 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视 ...

  9. OpenCV SURF检测的实例(附完整代码)

    OpenCV SURF检测的实例 OpenCV SURF检测的实例 OpenCV SURF检测的实例 #include <iostream> #include "opencv2/ ...

最新文章

  1. 【CTF】实验吧 古典密码
  2. 大学的很重要的元素是圈子,是人气
  3. NYOJ 117 求逆序数
  4. 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
  5. C# ini文件读写函数
  6. .net core ——微服务内通信Thrift和Http客户端响应比较
  7. aws mfa 认证_如何为您的AWS账户设置多因素身份验证(MFA)
  8. sqlserver如何从周一计算周_纯零基础,花10周时间,完全搞定Python,有没有可能?...
  9. 【计算机网络】 —— 标准化工作及相关组织
  10. ChaiNext:主流代币回调
  11. 加载语音license command
  12. vue仿今日头条_字节跳动今日头条前端面经(4轮技术面+hr面)
  13. CENTOS取消锁屏功能
  14. JDK安装与环境变量配置
  15. 中兴F460电信光纤猫超级用户密码
  16. 快慢指针(Fast and Slow Pointers)
  17. CAD不支持实时调试
  18. 网页打开速度慢,如何解决(修改DNS)
  19. c/c++ 二维数组指针参数传递 矩阵计算实例
  20. C#与PLC通信开发之三菱FX系列PLC

热门文章

  1. 深入理解SQL注入绕过WAF和过滤机制
  2. printf 中转义字符大全
  3. 数制系统之间的转换总结(各进制的转换)
  4. 驱动中获取PsActiveProcessHead变量地址的五种方法
  5. 在汇编程序中调用C语言的库函数,h转inc
  6. 信号实现父子进程之间的同步--sigsuspend的作用
  7. Java 原子变量类
  8. Linux Shell 命令--awk
  9. Android--查找程序根目录下所有文件/Java IO操作
  10. Android开发--BroadcastReceiver2