import cv2
import nothing as nothing
import numpy as npcap = cv2.VideoCapture('视频名称.mp4')  # 读取视频
fps = cap.get(cv2.CAP_PROP_FPS)  # 获取帧率while cap.isOpened():ret, frame = cap.read()# 调整窗口大小# cv2.namedWindow("gray frame", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致# cv2.resizeWindow("gray frame", 960, 540)  # 设置长和宽cv2.namedWindow("frame", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致cv2.resizeWindow("frame", 960, 540)  # 设置长和宽# cv2.namedWindow("ROIR", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致# cv2.resizeWindow("ROIR", 200, 200)  # 设置长和宽# cv2.namedWindow("ROIY", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致# cv2.resizeWindow("ROIY", 200, 200)  # 设置长和宽# cv2.namedWindow("ROIG", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致# cv2.resizeWindow("ROIG", 200, 200)  # 设置长和宽gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 将视频以灰度图展示cv2.putText(gray, 'fps: ' + str(fps), (0, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)  # 在展示窗口中显示帧率# 划定三个感兴趣区域分别为R, Y, G# ROI划定规则:图像矩阵名称[上 : 下, 左 : 右]R = gray[452:454, 594:596]Y = gray[446:448, 630:632]G = gray[444:446, 672:674]# 为划定的感兴趣区域赋予变量sum_R = np.sum(R)sum_Y = np.sum(Y)sum_G = np.sum(G)# 判断模块if sum_R > 200:# 如果R中那四个像素点的灰度值之和大于200,则显示红灯cv2.putText(frame, 'Red', (580, 400), 2, 2, (0, 0, 255), 3)cv2.putText(frame, 'Red', (1460, 650), 2, 2, (0, 0, 255), 3)cv2.putText(frame, 'Red', (1230, 670), 2, 2, (0, 0, 255), 3)# 用法   putText(选定的视频[或赋予其的变量], "要显示的文字", 字体[0为默认], 字体粗细程度, [颜色 BGR](  ,  ,  ,), 字体大小)elif sum_Y > 200:# 如果Y中那四个像素点的灰度值之和大于200,则显示黄灯cv2.putText(frame, 'Yellow', (550, 410), 2, 2, (0, 255, 255), 3)cv2.putText(frame, 'Yellow', (1460, 650), 2, 2, (0, 255, 255), 3)cv2.putText(frame, 'Yellow', (1230, 670), 2, 2, (0, 255, 255), 3)elif sum_G > 200:# 如果G中那四个像素点的灰度值之和大于200,则显示绿灯cv2.putText(frame, 'Green', (550, 410), 2, 2, (0, 255, 0), 3)cv2.putText(frame, 'Green', (1460, 650), 2, 2, (0, 255, 0), 3)cv2.putText(frame, 'Green', (1230, 670), 2, 2, (0, 255, 0), 3)else:# 如果都小于200,则显示等待cv2.putText(frame, 'Wait', (550, 410), 2, 2, (255, 255, 255), 3)cv2.putText(frame, 'Wait', (1460, 650), 2, 2, (255, 255, 255), 3)# cv2.imshow('gray frame', gray)  #显示灰度视频cv2.imshow('frame', frame)  # 显示原视频# 显示三个所划定的感兴趣区域# cv2.imshow("ROIR", R)# cv2.imshow("ROIY", Y)# cv2.imshow("ROIG", G)# 按 'm' 退出if cv2.waitKey(1) & 0xFF == ord('m'):breakcap.release()  # 释放
cv2.destroyAllWindows('ROIR')  # 用来删除窗口的,()里不指定任何参数,则删除所有窗口,删除特定的窗口,往()输入特定的窗口值

python 简单方式红绿灯状态识别相关推荐

  1. opencv python 简单方式红绿灯状态识别

    问题:         如何识别一个固定视角下的视频中的红绿灯的状态? 解决思路:         将原视频转为灰度视频,这样不用区分颜色,只需要知道灯是亮还是暗.在灰度视频下选定感兴趣区域,感兴趣区 ...

  2. opencv简单方式红绿灯状态识别

    前言:代码用于识别一个固定视角下的视频中的红绿灯的状态. 做法:先将原视频转为灰度视频,这样就不用区分颜色,划定出需要的感兴趣区域,判断感兴趣区域的值,得出那个区域的灯在量,得出此时红绿灯的实时状态. ...

  3. python 文件编码的识别_【python】python编码方式,chardet编码识别库

    环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...

  4. python常用的OCR文字识别与图片定位方式

    python常用的OCR文字识别与图片定位方式 前言 统一版本 更换pip源 1. Python调用百度文字识别ocr的实现方式 1.1 使用PyCharm安装依赖 baidu-aip chardet ...

  5. python os.system(cls)没反应_这真的是全宇宙最简单的Python安装方式了

    大家安装Python一般都是怎么安装的呢?每次有同学来问老师Python的安装方法时,老师都会教大家如何到Python的官网下载最新的Python安装包.但近来也有同学在反应,由于Python的官网在 ...

  6. python简单的人脸识别系统(PCA+逻辑回归)

    python简单的人脸识别系统(PCA+逻辑回归) 数据集:ORL人脸库 特征提取:PCA降维,将112*92降成30 分类器:逻辑回归 ** 代码: from tkinter import * fr ...

  7. Python简单实现人脸识别检测, 对照片进行评分

    大家好,今天和大家说说如何用Python简单实现人脸识别检测, 对照片进行排名,看看自己有多漂亮. [开发环境]: Python 3.8 Pycharm 2021.2 [模块使用]: requests ...

  8. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  9. (python)实现一个简单的图片文字识别脚本

    文章目录 截图 文字识别## 访问剪切板 总结 快毕业了,除了准备答辩之外,就是看看书,各种瞎晃~ 那么,这两天在看书的时候遇到这么个问题: 首先,部分电子版的书籍是以扫描图片的形式展现的,在阅读过程 ...

最新文章

  1. javascript --- 事件托付
  2. Java变长参数应该注意的问题
  3. C语言 变量 函数 (类型、作用域、生命周期、存储位置)
  4. 设计模式----工厂模式
  5. SqlSugar与Fluent NHibernate的性能测试对比
  6. leetcode 897. 递增顺序搜索树(中序遍历)
  7. 给定一个年份,判断是不是闰年
  8. 关于vue中sync修饰符的用法
  9. mysql_数据备份和迁移(Windows)
  10. Pytest框架教程(一)
  11. JAVA实时运算_Java 实时运算簿页面
  12. html给主题设置背景色,css如何设置元素的背景色?
  13. 联想服务器rd640性能,联想RD640服务器产品规格
  14. QC七大手法之直方图详解
  15. 千万数据的分库分表方案
  16. 设计模式笔记 ------ 建造者模式
  17. Android实例精讲——通过ListView构造微信聊天界面视图
  18. golang牛牛算法规则与聊天功能
  19. spring-webflux理解
  20. CentOS7安装与克隆

热门文章

  1. SQL报错及解决方法(随缘更新)
  2. python解题时间_1小时还是30秒?Python给你的另一种数据处理选择
  3. 卡耐基梅隆大学赢得DARPA网络挑战赛
  4. 无老师作文巨讲堂连载【2015年上半年全集】|托福作文满分必备
  5. 两款网页在线刷网站访客pv和ip的源码
  6. 不要因为不知,所以设计
  7. 打印机设置为双面打印_hudingyin_新浪博客
  8. Canon MF113W激光打印机双面打印方法
  9. 爬虫之scrapy框架的数据持久化存储/保存为scv,json文件
  10. [vue]vue接入AntV G2Plot