#准备工作,导入所需要的库 import cv2 import numpy as np #读取视频 cap = cv2.VideoCapture(r"红绿灯.mp4") #获取帧率 fps = cap.get(cv2.CAP_PROP_FPS)
while cap.isOpened(): ret, frame = cap.read() cv2.namedWindow("frame", 0) #0可调大小 cv2.resizeWindow("frame", 960, 540) #设置长和宽 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)