装包,创环境

import cv2 #包
import numpy as np #包
import time #包

插入视频,定义变量

cor_x, cor_y = -1, -1  # 定义变量名称
# fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 使用XVID编码器
camera = cv2.VideoCapture('video.mp4')  # 从文件读取视频,只需要修改成自己的视频路径即可进行测试
# camera = cv2.resize(camera, (1280, 720))
fps = camera.get(cv2.CAP_PROP_FPS)  # 获取视频帧率
print('视频帧率:%d fps' % fps)
cor = np.array([[1, 1]])  # 初始值并无意义,只是为了能够使用np.row_stack函数
cor_x, cor_y = -1, -1
camera = cv2.VideoCapture('红绿灯.mp4')  # 从文件读取视频,只需要修改成自己的视频路径即可进行测试
cor = np.array([[1, 1]])  # 初始值并无意义,只是为了能够使用np.row_stack函数

创坐标函数,赋予变量

def OnMouseAction(event, x, y, flags, param):# 创建回调函数 (event:指触发的阶跃信号,比如鼠标左键按下, x, y:指鼠标的实时坐标, flags:鼠标的保持信号,如鼠标保持按下# param自己需要使用的参数状态global cor_x, cor_y, cor  # 将变量变为全局变量,使之在函数外也能用if event == cv2.EVENT_LBUTTONDOWN:print("左键点击")print("%s" % x, y)cor_x, cor_y = x, y  # 将鼠标点击的x,y坐标赋予全局变量cor_x, cor_ycor_m = [cor_x, cor_y]cor = np.row_stack((cor, cor_m))  # 将鼠标点击的x,y坐标进行矩阵合并,并赋予全局变量elif event == cv2.EVENT_LBUTTONUP:cv2.line(img, (cor_x, cor_y), (cor_x, cor_y), (255, 255, 0), 7)# 当鼠标左键由按下变松开时在原地划线 从左到右分别是 (读入的图片, 开始坐标, 结束坐标, 颜色(b, g, r), 线条粗细)

逐帧分析视频,选出目标区域,分割图片

grabbed, img = camera.read()  # 逐帧采集视频流
img = cv2.resize(img, (1280, 720))
# grabbed = cv2.resize(img, (1280, 720))
cv2.namedWindow("红绿灯")
cv2.setMouseCallback("红绿灯", OnMouseAction)  # 将回调函数与opencv绑定while True:cv2.imshow("红绿灯", img)k = cv2.waitKey(1) & 0xFFif k == ord(' '):  # 空格退出操作break
cv2.destroyAllWindows()  # 关闭页面while True:grabbed, frame = camera.read()  # 逐帧采集视频流if not grabbed:breakframe = cv2.resize(frame, (1280, 720))frame_data = np.array(frame)  # 每一帧循环存入数组box_data = frame_data[cor[1, 1]:cor[2, 1], cor[1, 0]:cor[2, 0]]  # 取矩形目标区域yellow_box = frame_data[cor[3, 1]:cor[4, 1], cor[3, 0]:cor[4, 0]]yellow_max = np.max(yellow_box)b, g, r = cv2.split(box_data)  # 将截取的区域分割为b,g,r单通道颜色图片max_r = np.max(r)max_g = np.max(g)

筛选颜色的像素点,以此来区分红黄绿

 if yellow_max >= 245:  # 判断黄灯区域中发光值最大的像素点是不是大于245choose_box = cv2.rectangle(frame, tuple(cor[1, :]), tuple(cor[2, :]), (0, 255, 255), 2)cv2.putText(frame, "yellow", (cor[1, 0], cor[1, 1]), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 255), 2)  # 显示yellow文本信息elif max_g >= 245:choose_box = cv2.rectangle(frame, tuple(cor[1, :]), tuple(cor[2, :]), (0, 255, 0), 2)cv2.putText(frame, "green", (cor[1, 0], cor[1, 1]), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)  # 显示green文本信息elif max_r >= 245:choose_box = cv2.rectangle(frame, tuple(cor[1, :]), tuple(cor[2, :]), (0, 0, 255), 2)cv2.putText(frame, "red", (cor[1, 0], cor[1, 1]), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)  # 显示red文本信息# time.sleep(0.141)cv2.imshow('lwpCVWindow', frame)  # 显示采集到的视频流key = cv2.waitKey(1) & 0xFFif key == ord('q'):break
camera.release()
cv2.destroyAllWindows()

终结:

我也不会,看看就好,别来沾边

python利用opencv简单识别红绿灯相关推荐

  1. python利用opencv进识别行红绿灯

    目录 一.使用步骤 1.引入库 2.读入数据 3.获取帧率 4.创建函数将鼠标在图片中点击的坐标储存 5.逐帧采集视频并显示一帧图片来选择roi区域 6.最后逐帧采集视频并且放入循环一帧一帧的判断感兴 ...

  2. AI 质检学习报告——实践篇——第三步:python利用OpenCV打开摄像头截图后实现图片识字

    AI 质检学习报告--实践篇--第一步:python利用OpenCV打开摄像头并截图 AI 质检学习报告--实践篇--第二步:实现图片识字 前边两篇实践已经分别实现了利用OpenCV打开摄像头并截图和 ...

  3. python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)

    python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码 一.前言 今天的低价单孔摄像机(照相机)会给图像带来很多畸变.畸变主要有两 种:径向畸变和切想畸变.如下图所示,用 ...

  4. AI 质检学习报告——实践篇——第一步:python利用OpenCV打开摄像头并截图

    写在前边 想要做一个AI质检的项目,一点一点来,首先:python利用OpenCV打开摄像头并拍照. 效果 设摄像头像素不咋地,实际的产品肯定不会是这个像素,必须安排一个专业的. 实现代码 impor ...

  5. Python 利用百度文字识别 API 识别并提取图片中文字

    Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...

  6. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

  7. python中利用opencv简单做图片比对

    python环境中,利用opencv对二值单通道图片进行比对 下面代码中利用了两种比对的方法,一 对图片矩阵(m x m)求解特征值,通过比较特征值是否在一定的范围内,判断图片是否相同.二 对图片矩阵 ...

  8. Python+Tensorflow+Opencv人脸识别(任意数量人脸)

    Python+Tensorflow+Opencv的人脸识别 简单的人脸识别 准备工作 开始--先获取必要的人脸图像 训练--分类吧 识别大脸 简单的人脸识别 一直想做机器学习的东东,最近由于工作的调整 ...

  9. python利用opencv去除图片logo_python 基于opencv去除图片阴影

    一.前言 如果你自己打印过东西,应该有过这种经历.如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片.比如下面这两张图片: 因为左边的图片有大片阴影,所以打印出来的图片不堪入目 ...

最新文章

  1. 接软件开发项目,你需要知道这些!
  2. java实现遍历树形菜单方法——设计思路【含源代码】
  3. Objective-C语言的动态性
  4. 阿里云飞天AI加速器+Serverless容器,帮助图森未来提升资源利用率
  5. 究竟如何保证session一致性?
  6. 为什么要使用NoSQL
  7. 21.5 windows_21_Library_use_DLL_Invoke 动态库补充5
  8. apk文件在window上查看
  9. mongodb 如何更改端口号_Centos7配置MongoDB以及端口修改
  10. 阿里聚石塔2.0部署前后端分离项目
  11. win10重装win7后usb键盘鼠标都失灵
  12. 蓝牙室内定位技术系统应用场景解读
  13. 自己动手搭建苹果推送Push服务器
  14. Luogu 1880 合并石子
  15. error writing messa ge: File too large
  16. 七彩虹显卡软件测试,【七彩虹FM2A75评测】多款软件测试-中关村在线
  17. python 转换深度摄像头获取的字节流数据为16bitPNG图像
  18. 若依Ruoyi (java) 框架部署
  19. 盛大资深软件工程师谈Android开发经验
  20. 达摩院2021十大科技趋势:云原生重塑IT技术体系

热门文章

  1. linux测试自动化,一种基于Linux系统下自动化测试RoCE性能的方法及系统与流程
  2. 什么是有源(AON)和无源(PON)光网络?
  3. 像外行一样思考,像专家一样实践
  4. c语言输出不足10补0,c++ cout输出不足位补0 setw、setfill
  5. HTTP响应码大全详解
  6. ps3slim安装linux,PlayStation4,硬盘更换操作
  7. linux c语言修改文件的时间属性,请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。...
  8. Ethercat学习-GD32以太网学习
  9. VS生成DLL没有生成LIB文件的解决方法
  10. 【Python】torrentParser1.04 增加获得磁力链URI功能