OpenCV讀寫視訊檔案
阿新 • • 發佈:2018-11-19
OpenCV提供了VideoCapture類來支援視訊讀/寫。VideoCapture類通過read()函式來獲取每一幀,即一個RGB影象。
本文用到的視訊traffic.flv,來源於原作者Github,地址為:
https://github.com/techfort/pycv/tree/master/chapter8/surveillance_demo
OpenCV讀取視訊並顯示
# -*- coding:utf-8 -*- import cv2 cap = cv2.VideoCapture('video/traffic.flv') while True: ret, frame = cap.read() # 讀 cv2.imshow("capture", frame) # 顯示 if cv2.waitKey(100) & 0xFF == ord('q'): #鍵盤按鍵q,退出 break
OpenCV寫入視訊
# -*- coding:utf-8 -*- import cv2 # Step1. 呼叫VideoCapture構造器 cap = cv2.VideoCapture('video/traffic.flv') fps = cap.get(cv2.CAP_PROP_FPS) size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) # Step2. 改用YUV顏色編碼 寫入到另一個視訊檔案中 # 注意,視訊檔案的字尾改為.avi,由於I420採用YUV顏色編碼,只支援.avi格式 writer = cv2.VideoWriter('video/trafficOutput.avi', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size) ret, frame = cap.read() while ret: writer.write(frame) ret, frame = cap.read() # Step3.讀取新的檔案 cap = cv2.VideoCapture('video/trafficOutput.avi') while True: ret, frame = cap.read() # 讀 cv2.imshow("capture", frame) # 顯示 if cv2.waitKey(100) & 0xFF == ord('q'): #鍵盤按鍵q,退出 break