1. 程式人生 > >python程式設計:使用opencv按一定間隔擷取視訊幀

python程式設計:使用opencv按一定間隔擷取視訊幀

前言

關於opencv

OpenCV 是 Intel 開源計算機視覺庫 (Computer Version) 。它由一系列 C 函式和少量 C++ 類構成,實現了影象處理和計算機視覺方面的很多通用演算法。

OpenCV 擁有包括 300 多個 C 函式的跨平臺的中、高層 API 。它不依賴於其它的外部庫 —— 儘管也可以使用某些外部庫。 OpenCV 對非商業應用和商業應用都是免費 的。同時 OpenCV 提供了對硬體的訪問,可以直接訪問攝像頭,並且 opencv 還提供了一個簡單的 GUI(graphics user interface) 系統 :highgui 。 我們就通過 OpenCV 提供的一些方法來構造出這個人臉檢測 ( face detection 

) 程式來。

opencv的python包裝

OpenCV 本身是有 C/C++ 編寫的,如果要在其他語言中使用,我們可以通過對其動態連結庫檔案進行包裝即可,幸運的是, Python 下有很多個這樣的包裝,本文中使用的是 Cvtypes 。

事實上,在 Python 中很多的包都是來自第三方的,比如 PIL(Python Image Library) 即為 C 語言實現的一個圖形處理包,被包裝到了 Python 中,這些包裝可以讓你像使用 Python 的內建函式一樣的使用這些 API 。

這個例子使用python程式設計:用opencv按一定間隔擷取視訊幀,並儲存為圖片。

import cv2

       
vc = cv2.VideoCapture('Test.avi') #讀入視訊檔案
c=1

if vc.isOpened(): #判斷是否正常開啟
    rval , frame = vc.read()
else:
    rval = False

timeF = 1000  #視訊幀計數間隔頻率

while rval:   #迴圈讀取視訊幀
    rval, frame = vc.read()
    if(c%timeF == 0): #每隔timeF幀進行儲存操作
        cv2.imwrite('image/'+str(c) + '.jpg',frame) #儲存為影象
    c = c + 1
    cv2.waitKey(1)
vc.release()