前言:代码用于识别一个固定视角下的视频中的红绿灯的状态。
做法:先将原视频转为灰度视频,这样就不用区分颜色,划定出需要的感兴趣区域,判断感兴趣区域的值,得出那个区域的灯在量,得出此时红绿灯的实时状态。
一、使用步骤
1、装包导入库
首先安装opencv
导入以下库
import cv2
import numpy as np
2、读入视频并定义
cap = cv2.VideoCapture('红绿灯.mp4') # 读取视频
while cap.isOpened():
ret, frame = cap.read()
# 调整窗口大小
cv2.namedWindow("frame", 0) # 0可调大小,注意:窗口名必须imshow里面的一窗口名一致
cv2.resizeWindow("frame", 960, 540) # 设置长和宽
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将视频转为灰度视频
3、划定感兴趣区并获得值
将红绿灯的区域分别选出来
# 划定三个感兴趣区域分别为R, G, B
# ROI划定规则:图像矩阵名称[上 : 下, 左 : 右]
R = gray[452:454, 594:596]
Y = gray[446:448, 630:632]
G = gray[444:446, 672