import cv2 import numpy as np cap = cv2.VideoCapture("红绿灯.mp4") # 导入视频 while True: ret, frame = cap.read() if ret == False: break frame = 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
结果如下图所示