爲什麼要有這個小例子,因爲在做目標檢測的時候經常要讀取視頻幀,並在訪幀上進行目標檢測再播放出來以觀察效果。
# coding: utf-8
import numpy as np
import cv2
import os
# VideoCapture既支持視頻文件的讀取也支持從攝像機中讀取視頻
cap = cv2.VideoCapture("/Users/left/ai/data/videos/0025.h264")
if cap.isOpened() != True:
os._exit(-1)
# 對象創建成功後isOpened()將返回true
while True:
# 一幀一幀的捕獲
ret, frame = cap.read()
if ret != True:
break
# 在讀取的幀上我們可以做些事情
# 顏色空間變換,變爲灰度圖
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
# waitKey(int delay)這個函數接收一個整形值,
# 如果這個值是零,那麼函數不會有返回值,如果delay大於0
# 那麼超過delayms後,如果沒有按鍵,那麼會返回-1,如果按鍵
# 會返回鍵盤值,在某些系統中,返回的鍵盤值可能不是ASCII編碼
# 的,所以通過與0xFF進行與運算只取最後一個字節
if (cv2.waitKey(10) & 0xFF) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
效果: