1、导入所需要的库

import cv2
import numpy as np

2、视频读取

首先把视频读取进来,可根据自己所使用的视频,用resize调整视频的分辨大小

cap = cv2.VideoCapture('红绿灯.mp4')
while True:ret,frame = cap.read()if ret == False:breakframe=cv2.resize(frame,(1720,800))

imshow()(如下图所示)

3、截取roi区域

roiColor=frame[300:450,450:700]

截取roi的区域,也就是说,为了避免多余的干扰因素我们要把红绿灯的位置给截取出来(如下图所示

截取后的roi(如下图所示)

4、转换hsv颜色空间

hsv = cv2.cvtColor(roiColor,cv2.COLOR_BGR2HSV)

5、二值图像颜色判定

因为图像是二值的图像,所以如果图像出现白点,也就是255,那么就取他的max最大值255,视频帧的不断变化然后遍历每个颜色值

​
red_color = np.max(red_blur)
green_color = np.max(green_blur)
if red_color == 255:print('red')
elif green_color == 255:print('green')​

6、颜色结果画在图像上

用矩形框来框选出红绿灯区域

cv2.rectangle(frame,(515,310),(630,360),(0,0,255),2) #按坐标画出矩形框cv2.putText(frame, "red", (450, 300), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255),2)#显示red文本信息

7、完整代码

#导入库
import cv2
import numpy as np
#导入图像
cap = cv2.VideoCapture('红绿灯.mp4')
while True:ret,frame = cap.read()if ret == False:breakframe=cv2.resize(frame,(1720,800))#截取指定区域roiColor=frame[300:450,450:700]#转换hsv颜色空间hsv = cv2.cvtColor(roiColor,cv2.COLOR_BGR2HSV)##redlower_hsv_red = np.array([157,177,122])upper_hsv_red = np.array([179,255,255])mask_red = cv2.inRange(hsv,lowerb=lower_hsv_red,upperb=upper_hsv_red)#中值滤波red_blur = cv2.medianBlur(mask_red, 7)#greenlower_hsv_green = np.array([49,79,137])upper_hsv_green = np.array([90,255,255])mask_green = cv2.inRange(hsv,lowerb=lower_hsv_green,upperb=upper_hsv_green)#中值滤波green_blur = cv2.medianBlur(mask_green, 7)#因为图像是二值的图像,所以如果图像出现白点,也就是255,那么就取他的max最大值255red_color = np.max(red_blur)green_color = np.max(green_blur)#在red_color中判断二值图像如果数值等于255,那么就判定为redif red_color == 255:print('red')cv2.rectangle(frame,(515,310),(630,360),(0,0,255),2) #按坐标画出矩形框cv2.putText(frame, "red", (450, 300), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255),2)#显示red文本信息#在green_color中判断二值图像如果数值等于255,那么就判定为greenelif green_color == 255:print('green')cv2.rectangle(frame,(515,310),(630,360),(0,255,0),2)cv2.putText(frame, "green", (450, 300), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0),2)cv2.imshow('frame', frame)red_blur = cv2.resize(red_blur,(300,200))green_blur = cv2.resize(green_blur,(300,200))cv2.imshow('red_widow',red_blur)cv2.imshow('green_window', green_blur)c=cv2.waitKey(1)if c==27:break

检测红灯的效果(如下图所示)

检测绿灯的效果(如下图所示)

(附代码)基于Python对交通路口的红绿灯进行颜色检测相关推荐

  1. Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S

    Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码.代码基于Python,需要用到的外部库有: Keras(搭建神经网络) Sci ...

  2. python交通调查数据处理_基于Python的交通流数据清洗

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的交通流数据清洗 作者:李红梅 唐岚 来源:<电子技术与软件工程> 2016 年第 09 期 [关键词]交通 ...

  3. cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

  4. python登录系统账号检测_一种基于python的惠普打印机默认用户名密码检测方法与流程...

    本发明涉及打印机检测技术领域,特别是一种基于python的惠普打印机默认用户名密码检测方法. 背景技术: 网络打印机是当前各大中小型企业正常办公比不可少的办公网络设备,但对于大中型企业而言,不同部门或 ...

  5. Python基于OpenCV的交通路口红绿灯控制系统设计

    开发环境: PyCharm + Python3.7 + Sqlite + OpenCV 功能介绍:   基于python和opencv库实现一个交通路口红绿灯控制系统,主要可以自动和手动控制红绿灯,还 ...

  6. python量化投资必背代码-基于python的开源量化交易,量化投资架构

    原标题:基于python的开源量化交易,量化投资架构 github地址:https://github.com/bbfamily/abu abu能够帮助用户自动完善策略,主动分析策略产生的交易行为,智能 ...

  7. 幻方加密代码——自动生成幻方密钥方法,罗伯法单偶数阶的解法代码基于python

    前导: 罗伯法的口诀: 1.奇数阶幻方 2.双偶阶幻方 3.单偶阶幻方 自动生成幻方密钥: 前导: 幻方加密是基于罗伯法的填数自动生成阶级数阵来作为密钥,要明白幻方加密,首先就要先了解罗伯法的规律,编 ...

  8. 基于Python的复杂环境中车道线自动检测系统

    正常版:在马路上寻找车道线 在这个项目中,本文建立了一个计算机视觉算法,用于检测车道线并创建平均和外推的边界线. 流程如下: 1)将帧转换为灰度: 2)为黄色和白色像素创建蒙版: 3)应用高斯平滑: ...

  9. python 桑基图_3行代码基于python的matplotlib绘制桑基图

    背景 桑基图作为1种表达数据流动方向的可视化方式,在商业数据分析,地理可视化,生物医学领域有着广泛应用.比如:在基因组学领域,有研究利用桑基图来表示生物分子之间的调控关系. 目前多数桑基图软件包(如p ...

  10. Python 实现图片裁剪(附代码) | Python工具

    目录 前言 环境依赖 代码 总结 前言 本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义. 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部 ...

最新文章

  1. 内存有限的情况下 Spark 如何处理 T 级别的数据?
  2. MySQL from后面的子查询使用
  3. OpenCV中鼠标交互-绘制矩形框
  4. Mounty for NTFS免费软件实现MAC OS X下对NTFS分区进行读写
  5. TensorFlow2.0(三)--Keras构建神经网络回归模型
  6. Java三大器之过滤器(Filter)的工作原理和代码演示
  7. oracle排序去重,Oracle中去重复+排序
  8. APP开发短信接口集成
  9. webstrom 常用的快捷键
  10. JavaEE项目 Web聊天室(JSP实现)
  11. 2022年北京航空航天大学计算机考研复试分数线
  12. 二维非对心弹性碰撞的算法
  13. Qt:34---MDI多文档界面
  14. 如何利用Tempo BI大数据分析工具快速完成数据同环比分析?
  15. matlab数值积分中函数积分的4种方法
  16. ios点击推送闪退_王者ios14苹果手机闪退已修复,腾讯痛失百万玩家能否再回来...
  17. 万年历-农历-干支纪年法
  18. 比尔盖兹CES的最后语录
  19. 啊5G 你比4G多1G
  20. ruyistdio IDE caffemodel 转.wk

热门文章

  1. java int过长_java - 为什么长,不是int否则限制时间超过 - SO中文参考 - www.soinside.com...
  2. 2015互联网校招总结—一路走来
  3. LMP90080-芯片手册
  4. EV 鼠标被消费者誉为世界“第八大奇迹”内幕
  5. 深入理解Plasma(四)Plasma Cash
  6. OpenGL ES EGL eglCreateContext
  7. android sqlite 示例,Android SQLite数据库操作示例
  8. 在VMWare虚拟机上安装Kali linux系统的完整过程(图文)
  9. 配置babel-plugin-import报错的深坑
  10. 【计算机视觉】Lecture 28:跟踪简介