Open cv2 识别红绿灯

1. 导入相关库

import cv2
import numpy as np

2. 导入视频

cap = cv2.VideoCapture("红绿灯.mp4")

3. 修改视频尺寸

frame = cv2.resize(frame, (1620, 900))

4. 转换hsv颜色空间

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

5. 红灯

lower_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) #中值滤波

6.  绿灯

lower_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) #中值滤波

7. 二值图像颜色的判定(因为图像是二值的图像,所以如果图像出现白点,也就是255,那么就取他的max最大值255,在red_color中判断二值图像如果数值等于255,那么就判定为红,在green_color中判断二值图像如果数值等于255,那么就判定为绿。)

red_color = np.max(red_blur)
green_color = np.max(green_blur)
if red_color == 255:print('红')cv2.rectangle(frame, (660, 420), (400, 300), (0, 0, 255), 2)  # 按坐标画出矩形框cv2.putText(frame, "red", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)
elif green_color == 255:print('绿')cv2.rectangle(frame, (660, 420), (400, 300), (0, 255, 0), 2)cv2.putText(frame, "green", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)

8. 将结果展示

cv2.imshow('frame',frame)
red_blur = cv2.resize(red_blur,(200,150))
green_blur = cv2.resize(green_blur,(200,150))
cv2.imshow('red',red_blur)
cv2.imshow('green',green_blur)
c = cv2.waitKey(1)

最终展示结果为:

 

 

 

9. 完整代码:

#导库
import cv2
import numpy as np
cap = cv2.VideoCapture("红绿灯.mp4") #导入视频
while True:ret,frame = cap.read()if ret == False:breakframe = cv2.resize(frame, (1620, 900)) #修改视频尺寸img = frame[100:500,300:800]hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #转换hsv颜色空间#红灯lower_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)#绿灯lower_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)red_color = np.max(red_blur)green_color = np.max(green_blur)   if red_color == 255:print('红')cv2.rectangle(frame, (660, 420), (400, 300), (0, 0, 255), 2)  # 按坐标画出矩形框cv2.putText(frame, "red", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2) #显示文本信息elif green_color == 255:print('绿')cv2.rectangle(frame, (660, 420), (400, 300), (0, 255, 0), 2)cv2.putText(frame, "green", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)cv2.imshow('frame',frame)red_blur = cv2.resize(red_blur,(200,150))green_blur = cv2.resize(green_blur,(200,150))cv2.imshow('red',red_blur)cv2.imshow('green',green_blur)c = cv2.waitKey(1)if c==1:break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/252089.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Arduino实验03 智能红绿灯】

目录 一、实验目的 二、实验设备与环境 三、实验重点 四、实验难点 五、实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一、实验目的 (1)熟悉掌握Arduino编程基本语法; (2)熟悉按键、蜂鸣器的功能,掌握接口电路连接&am…

turtle绘制红绿灯,实现灯闪烁效果

画出边框 首先导入库,并且画出边框,画完之后可以选择隐藏海龟,如果不隐藏你的红绿灯中间会出现画笔,像这样 import turtle import timeturtle.width(20)#线的粗细 for i in range(2):#画出边框turtle.left(90)turtle.fd(300)tu…

如何添加打印机到电脑

首先你要知道打印机的ip 可以先打印测试页 找到控制面板——点击设备与打印机 左上角选择添加打印机 选择 我所需的打印机未列出 点击add aprinter usinga … 然后下一页 输入你的打印机的ip地址 和端口号 点击下一步

共享打印机连接方法

点击开始-运行(快捷键:开始键R),键入连接共享的打印机的电脑网络IP地址,如\\192.168.1.250, 点击确定,就可以查看到共享的打印机及文件夹啦。选择要添加的共享打印机,双击,就会自动添…

计算机无法打印图片,电脑中打印机可以打印文档却无法打印图片如何解决

我们在使用电脑过程中,很容易会碰到一些问题,遇到问题时也只能耐心寻找原因进行解决。比如,现在,有位用户反馈自己的电脑中打印机可以打印文档却无法打印图片,这该怎么办呢?接下来,就随系统城小…

计算机图桌面打印出来,桌面图片打印设置方法

以电脑Windows7系统为例,打印桌面图片的具体步骤是: 1、在电脑桌面上打开需要打印的图片。 2、点击图片上方的打印图标。 3、设置好打印参数后,点击【打印】按钮即可。 打印通常指把电脑或其他电子设备中的文字或图片等可见数据,通…

如何批量打印jpg图片

图片打印在标签制作中的应用也很广泛,因为现在很多用户在制作标签时会添加相对应的图片,这里所需的图片数量会很多,如果将图片逐个导入标签内进行打印,费力还容易出错。这时只需将图片放在一个文件夹里,通过条码软件生…

win11自带的照片查看器无法打印问题解决

参考文章:https://blog.csdn.net/weixin_39589644/article/details/112708068 文章目录 问题解决方法 问题 win11自带的照片查看器无法打印。其它查看图片的应用,都可以正常用打印机打印。唯独win11自带的查看照片的应用,按了打印键以后打印…

epson喷墨一体机打印照片偏色的调整

本文经验针对普通用户。 打印机 有一台EPSON L365系列墨仓式打印一体机,使用状况良好。该款打印机定位于家用,墨仓式设计降低了打印成本。功能齐全,支持Wi-Fi无线打印,支持复印,扫描。支持从手机/IPAD移动设备APP打印照…

Ipad使用技巧之——打印机

一 概述 有iPad使用需求的人可能会使用iPad进行打印照片或文档,对于首次进行打印的人可能会有几个疑问: iPad自身是否提供打印功能打印机提供商是否提供对应的软件支持(appstore商店是否有对应应用) 二 硬件支持 iPad pro2021款佳能G3800 三 iPad打印…

比手机还小的打印机?极印·立可印N1潮玩口袋照片打印机评测体验

在移动互联网高度普及的今天,智能手机早已成为了许多人每天不可或缺的随身伴侣。究其原因,无非是智能手机既轻巧便携又功能强大,我们日常工作和生活中的许多事情,都可以通过手机上的各种APP应用轻松搞定。 那么亲爱的读者朋友们是…

vue-router使用

router中 hash模式和 history 的区别: 不同的路由,,哈希值会被修改,但是不会向服务器发送新的请求,,VueRouter会监听 url中哈希值变化去匹配组件 hash模式优点: 兼容性好简单配置,…

简单了解固态硬盘(SSD)

简单了解SSD SSD VS HDD机械硬盘HDD固态硬盘SSD SSD的“解剖图”——系统框架图SSD的“基石”——存储介质闪存器件闪存芯片架构三维闪存闪存存在的问题 SSD的“大脑”——FTL映射管理垃圾回收修剪Trim坏块管理掉电恢复磨损平衡 SSD的“荣誉”——参数指标 SSD VS HDD 机械硬盘…

编程示例:求排列的逆,反序表,以及从反序表计算排列

编程示例:求排列的逆,反序表,以及从反序表计算排列 计算机程序设计艺术的第三卷 第五章排序中,第5.1.1节中 提到了排列的反序,反序表,逆的概念。 首先,简单地介绍一下这两个概念。例如一个排列…

JS实现计时器/秒表功能

系统学习JS时的一个小练习 直接上代码吧&#xff0c;注释写得还算详细&#xff0c;就不赘述了&#xff0c;很简单的一个练习。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-C…

JavaScript 计时器

1.在JavaScript中&#xff0c;我们可以在设定的时间间隔之后来执行代码&#xff0c;而不是在函数被调用后立即执行。 2&#xff0e;计时器类型&#xff1a; &#xff08;1&#xff09;一次性计时器&#xff1a;仅在指定的延迟时间之后触发一次。 &#xff08;2&#xff09;间…

window遇到 stopcode: 0xc000021a 无法启动的问题解决

今天朋友电脑window10遇到以上问题&#xff1a;stopcode: 0xc000021a 无法自动修复和启动的问题。 解决办法如下&#xff1a; 第一步、进入dos命令行 点击其他选项&#xff08;Advanced options&#xff09; 点击工具 第二步、确定系统盘 进入dos之后 输入一下命令 回车…

vivo Y55s 评测

vivo Y55s正面配备了一块6.58英寸水滴屏&#xff0c;2408*1080分辨率&#xff0c;支持DCI-P3广色域以及防蓝光护眼模式等&#xff0c;同时vivo Y55s是Y系列首款支持夜读模式的产品&#xff0c;亮度最低可至1nit&#xff0c;暗光和夜晚使用对眼睛更舒服&#xff0c;屏幕阅读更柔…

步步高S5救砖

笔者是个学(chun)生(fei)党(wu)&#xff0c;由于被家长的限制&#xff0c;至今未有过手机&#xff0c;前几个月&#xff0c;我盯上了我的步步高S5&#xff0c;从此它承受了它这个机型不该承受的事。 自从给它刷了三方recovery&#xff0c;我总是保(zhe)养(teng)它&#xff0c;…