1 # -*- coding:utf-8 -*- 2 3 import cv2 4 import os 5 6 7 images = 'D:\sunway-AI\Video_Frame\' 8 if not os.path.exists(images): 9 os.mkdir(images) 10 11 cap = cv2.VideoCapture("D:\sunway-AI\地图定位\Video\demo_01.mp4") 12 c=0 13 14 kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3)) 15 16 writer = None 17 18 fourcc = cv2.VideoWriter_fourcc(*'MJPG') 19 videoWriter = cv2.VideoWriter("F:\sunway-AI\Video_Frame\OUT_02.avi", fourcc, 24,(640,480))#最后一个是保存图片的尺寸 20 21 while(1): 22 23 # 读取视频帧 24 success, frame = cap.read() 25 26 if success: 27 if c==0: 28 pre_frame = frame.copy() 29 c = c+1 30 continue 31 32 frameDelta = cv2.absdiff(frame, pre_frame) 33 pre_frame = frame.copy() 34 35 frame_gray = cv2.cvtColor(frameDelta, cv2.COLOR_BGR2GRAY) 36 frame_thresh = cv2.threshold(frame_gray, 40, 255, cv2.THRESH_BINARY)[1] 37 # frame_opened = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) 38 39 binary, cnts, hierarchy = cv2.findContours(frame_thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 40 41 for cc in cnts: 42 43 if cv2.contourArea(cc) > 50: 44 continue 45 46 (x, y, w, h) = cv2.boundingRect(cc) 47 48 if w<=0 | h<=0: 49 continue 50 51 frame_roi = frame[x:x+w+1, y:y+h+1] 52 53 H, W, C = frame_roi.shape 54 55 # isPoint = False 56 # for hy in range(H): 57 # for wx in range(W): 58 # B = frame_roi[hy][wx][0] 59 # G = frame_roi[hy][wx][1] 60 # R = frame_roi[hy][wx][2] 61 62 # # print("B=",B," G=",G," R=",R) 63 64 # if(B>200): 65 # # print("*****************") 66 # isPoint = True 67 # break 68 69 # if(isPoint): 70 cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) 71 72 73 # 显示视频帧 74 cv2.imshow("capture", frame) 75 # cv2.imwrite(images + str(c) + '.bmp', frame) 76 77 videoWriter.write(frame) 78 79 c=c+1 80 else: 81 break 82 #等候50ms,播放下一帧,或者按q键退出 83 84 if cv2.waitKey(50) &0xFF ==ord('q'): 85 break 86 87 #释放视频流 88 videoWriter.release() 89 cap.release() 90 91 #关闭所有窗口 92 93 cv2.destroyAllWindows()