一堆废话

红绿灯分为导向灯和圆形灯。一般圆形灯在路口只有一盏灯,红灯亮时禁止直行和左转,可以右转弯。导向灯市带有箭头的,可以有两个或三个,分别指示不同方向的行车和停车。按指示的灯即可,没有右转向导向灯的情况下可以视为可以右转。

RGB颜色空间以R(Red:红)、G(Green:绿色)、 B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。在大自然中有无穷多种不同的颜色,而人眼只能分辨有限种不同的颜色,RGB棋式可表示一千六百多万种不同的颜色,在人跟看起来它非常接近大自然的颜色,故又称为自然色彩模式。红绿蓝代表可见光谱中的三种基木颜色或称为三原色,每一种颜色按其亮度的不同分为256个等级。当色光三原色重叠时,由于不同的混色比例能产生各种中间色。

RGB颜色空间最大的优点就是直观,容易理解。缺点是R、G、B这三个分量是高度相关的,即如果一个颜色的某一个分量发生了一定程度的改变,那么这个相色很可能要发生改变;人眼对于常见的 红绿蓝三色的敏感程度是不一样的,因此RGB颜色空间的均匀性非常差,且两种颜色之间的知觉差异色差不能表示为改颜色空间中两点间的距离,但是利用线性或非线性变换,则可以从RGB颜色空间推导出其他的颜色特征空间。

而在HSV颜色空间中,颜色的参数分别是:色调(H),饱和度(S),明度(V)。色调H,用角度度量,取值范围为,从红色开始按逆时针方向计算,红色为,绿色为,蓝色为。它们的补色是:黄色为,青色为,品红为。饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色于白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为,值越大,颜色越饱和。明度V表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为(黑)到(白)。相对于RGB空间,HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比。将图片从传统的RGB颜色空间转换到HSV模型空间,能够大大提高目标识别与检测的抗干扰能力,使得检测结果更为精确。

代码解释

本设计中红绿灯检测程序主要有detectColor.py文件和TLState.py两个文件。

在detectColor.py文件中主要是检测被TLState.py分割出来的灯的颜色,首先利用OpenCV中的cv2.cvtColor(image,cv2.COLOR_BGR2HSV)函数,将图片从BGR格式转换为HSV格式。之后利用cv2.inRange()函数设阈值,去除背景部分,再进行中值滤波,最后计算非零像素点数,取其像素点最多的那个对应的结果作为最终结果。

在TLState.py文件中,进行灰度处理,之后利用cv2.HoughCircles()函数进行霍夫圆环检测。将检测到的圆环送入detectColor.py文件中的detectColor()函数中进行颜色检测。

实验结果

红绿灯检测得到的结果如下图所示:

红绿灯带箭头检测得到的结果如下图所示:

代码链接:

https://github.com/ZhiqiangHo/code-of-csdn/tree/master/Traffic%20Light%20Detection%20using%20Python%20OpenCV

opencv 图片叠加_基于OpenCV的红绿灯识别代码解析相关推荐

  1. 基于python3写的源码剖析_基于python3生成标签云代码解析

    这篇文章主要介绍了基于python3生成标签云代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 标签云是现在大数据里面最喜欢使用的一种展现方式 ...

  2. opencv 边缘平滑_基于OpenCV的车道检测实现(一)

    无人驾驶的话题日趋起热,而车道线检测对于无人驾驶的路径规划来讲特别重要.要遵守交通规则,首先的要求便是对车道线检测,而且通过检测车道线可以进一步的检测地面指示标志.进行前碰撞预警策略设计等. 早早就对 ...

  3. java opencv bp网_基于Opencv自带BP网络的车标简易识别

    记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测试集准备 先将数据集手动划分成训练集和测试集,并分好类,比如第一类就放在文件夹名为0的文件夹下, ...

  4. c++opencv汉字分割_基于OpenCV 的车牌识别

    车牌识别是一种图像处理技术,用于识别不同车辆.这项技术被广泛用于各种安全检测中.现在让我一起基于OpenCV编写Python代码来完成这一任务. 车牌识别的相关步骤 1.车牌检测:第一步是从汽车上检测 ...

  5. opencv 轮廓放大_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...

    title: [python]基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析 type: categories copyright: true categories ...

  6. opencv python考勤_基于opencv和dlib人脸识别的员工考勤系统

    已打包生成可执行文件exe,可直接下载运行,exe文件及代码均已上传到我的github,点击传送门,打包的具体过程及教程可见pyinstaller简明教程 WorkAttendanceSystem 一 ...

  7. opencv 处理黑夜_基于 opencv图像去噪

    1. 实验步骤:先为灰度图像添加高斯噪声.胡椒噪声.盐噪声和椒盐噪声,再分别利用算术均值滤波器.几何均值滤波器.谐波和逆谐波均值滤波器进行图像去噪.模板大小为5*5. 核心代码如下: 添加各类噪声: ...

  8. c# opencv 轮廓检测_基于OpenCV的区域分割、轮廓检测和阈值处理

    OpenCV是一个巨大的开源库,广泛用于计算机视觉,人工智能和图像处理领域.它在现实世界中的典型应用是人脸识别,物体检测,人类活动识别,物体跟踪等. 现在,假设我们只需要从整个输入帧中检测到一个对象. ...

  9. 二:OpenCV图片叠加逻辑运算

    通过图片叠加逻辑运算可以实现多种效果,如模版截取感兴趣区域,图片融合,色彩交叉等,本文涉及4个图片矩阵叠加逻辑运算函数,如下: 1.bitwise_and 2.bitwise_or 3.bitwise ...

最新文章

  1. 英特尔全栈解决方案,助推人工智能在多领域的落地发展
  2. 中石油大学计算机二在线作业答案,中国石油大学计算机应用基础第二阶段在线作业答案2018年.doc...
  3. Difference between a normal BSP application and a WebClient UI component
  4. java 界面输出控制台信息,java 怎么获取控制台的数据并且输出到GUI上
  5. 操作系统用户态内核态线程同步
  6. JavaScript==比较的规则
  7. java系列3:数组初始化(基本格式)
  8. 前端学习之--CSS
  9. “添加删除WIndows组件”中没有IIS时安装IIS方法
  10. 一些压力测试结果(Mysql,Zookeeper,Redis,Mongodb)
  11. android 7.0楷体字体,Win7系统怎么设置字体为楷体gb2312
  12. 东芝停电事件可能导致Q3闪存市场价格波动
  13. Altium net has no driving source问题
  14. STM32外设驱动总结(公司项目需要)
  15. 乐嘉性格色彩-4色特性,学习感悟
  16. HASH SEMI JOIN (semi join) 比 hash join 快!
  17. nabc模型_团队开发-极速蜗牛-NABC模型
  18. python中的while语句
  19. DNS 114.114.114.114与8.8.8.8
  20. 华为服务器查询IPMI地址

热门文章

  1. MyBatis直接执行SQL查询及批量插入数据
  2. dpkg:处理 xxx (--configure)时出错解决办法(转载)
  3. sizeof(class)分析
  4. 《算法导论》之 Problem 5.1-3(随机函数发生器的设计)
  5. 随想录(libc.so和ld.so调试)
  6. linux驱动编写(platform总线和网卡驱动)
  7. 一步一步写算法(之选择排序)
  8. zset中的score_读懂才会用 : 带你见识 Redis 的 zset
  9. 软件关闭excel但是进程中还存在原因_从软件视角看波音737事故系列述评之一:软件普适化下的能力建设...
  10. 参与社团活动的意义_大学参加社团活动有意义吗?