Opencv-Python視訊處理
阿新 • • 發佈:2018-12-12
一、視訊的讀取
OpenCV為視訊的讀入提供了一個類VideoCapture,用於獲取相機裝置並捕獲影象和視訊,或是從檔案中捕獲。
- 從相機裝置讀取:cv2.VideoCapture(Index)——Index預設為0,可以根據相機數目增加,cap.read()返回布林值,最後記得釋放捕獲
import numpy as np import cv2 cap = cv2.VideoCapture(0) ret = cap.set(3,320)####設定捕獲視窗大小 ret = cap.set(4,240) while(cap.isOpened()): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)####彩色影象用BGR2RGB cv2.imshow('frame',gray) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
- 從視訊檔案捕捉:VideoCapture(filename):
import numpy as np import cv2 cap = cv2.VideoCapture('vtest.avi') while(cap.isOpened()): ret, frame = cap.read()##ret返回布林量 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('frame',gray) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
二、視訊儲存
主要使用函式:cv2.VideoWriter(filename, fourcc, fps, frameSize)
引數詳解
- filename:指定的檔名
- fourcc:編碼格式,如CV_FOURCC(‘P’,’I’,’M’,’1’)是MPEG-1格式,CV_FOURCC(‘M’,’G’,’P’,’G’)為motion-jpeg格式
- fps:幀率
- frameSize:視訊的尺寸大小,(320,240)、(640,480)
#!/usr/bin/env python import numpy as np import cv2 cap = cv2.VideoCapture(0) i = 0 while( i < 18): i = i+1 print(cap.get(i)) ret = cap.set(3,320) ret = cap.set(4,240) #output info fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi', fourcc, 20.0, (320,240)) while(cap.isOpened()): ret, frame = cap.read() if ret == True: gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) out.write(frame) cv2.imshow('image', gray) k = cv2.waitKey(1) if (k & 0xff == ord('q')): break else: break cap.release() out.release() cv2.destroyAllWindows()