我們知道,OpenCV是一款強大的跨平臺的計算機視覺庫,使用它能完成我們對於圖像和視頻處理的很多功能,今天,我們使用OpenCV來捕獲計算機攝像頭的視頻。

我們知道,視頻是將一系列靜態影像以電信號的方式加以捕捉、記錄、處理、儲存、傳送與重現的各種技術。OpenCV恰好提供了對於視頻的捕捉、記錄、處理、存儲、傳送等功能。這一系列動作通過cv2.VideoCapture類來實現。它的原理基本上就是通過獲取視頻中的一系列禎來實現對於視頻的各種操作。

下面,我們通過一個例子來展示Python使用OpenCV庫來捕獲攝像頭視頻的功能。
#!/usr/bin/env python
# coding:utf-8
import numpy as np
import cv2
capture = cv2.VideoCapture(0)
while True:
ret, frame = capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
capture.release()
cv2.destroyAllWindows()
前面的導入模塊內容不用解釋了
capture = cv2.VideoCapture(0)
這一句表示調用計算機內置攝像頭來獲取視頻,如果傳入參數為1時,表示調用計算機外置攝像頭,比如usb連接的攝像頭等。VideoCapture對象也可以傳入視頻文件地址。
ret, frame = capture.read()
這裡使用一個循環表示持續獲取攝像頭數據,VideoCapture對象的read()方法返回兩個值。
第一個值一般為ret,它是一個布爾值,表示是否獲取到了圖像數據,如果獲取成功返回True,獲取失敗返回False,這一句後可以判斷ret是否為True,如果為True則向下執行,False則執行相應的操作,這樣可以使得我們的應用程式更加健壯。它還有一個功能就是驗證獲取到的視頻是否到達結尾部分。
第二個值表示獲取到的一幀的圖像數據。下一步我們將這個圖像數據直接轉化為灰度圖像進行了處理。
後面的代碼就不用解釋,關於OpenCV的處理鍵盤事件方法可以參照我的另一篇博文(使用Python OpenCV處理圖像之詳解使用OpenCV處理鍵盤滑鼠事件)。
由於我的電腦攝像頭被我拆掉了,這裡就不演示捕獲的具體內容了,感興趣的朋友們自己測試下上述代碼吧。
好了,今天的內容就到這裡了,後續我們會推出關於視頻處理的一些應用。歡迎大家持續關注,感興趣的朋友們要多練哦。
轉載請註明出處,百家號:Python高手養成