天天看點

OpenCV Python 錄制視訊

<a href="#%E8%B0%83%E7%94%A8%E6%91%84%E5%83%8F%E5%A4%B4">調用攝像頭</a>

<a href="#%E5%BC%95%E5%85%A5%E5%BA%93%E6%94%AF%E6%8C%81">引入庫支援</a>

<a href="#%E5%88%9D%E5%A7%8B%E5%8C%96">初始化</a>

<a href="#%E8%B0%83%E6%95%B4%E7%95%8C%E9%9D%A2%E5%A4%A7%E5%B0%8F">調整界面大小</a>

<a href="#%E5%AE%9E%E6%97%B6%E6%98%BE%E7%A4%BA">實時顯示</a>

<a href="#%E5%BD%95%E5%88%B6%E8%A7%86%E9%A2%91%E5%B9%B6%E4%BF%9D%E5%AD%98">錄制視訊并儲存</a>

<a href="#fourcc%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3">fourcc問題解決</a>

<a href="#%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0">代碼實作</a>

<a href="#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA">效果展示</a>

<a href="#%E6%80%BB%E7%BB%93">總結</a>

學到實用OpenCV調用筆記本電腦的攝像頭,并錄制視訊儲存到本地硬碟的時候,出現了一點故障,那就是擷取到的檔案總是為0KB。經過一番查找,終于找到了解決辦法。

調用攝像頭作為本實驗的基礎是必不可少的,因為我們很有可能在初始化的這一步出錯,而導緻整個視訊錄制的失敗。

初始化的時候,參數可以是整數,也可以是外部的視訊檔案的名稱。這裡需要強調的是整數類型。

通常來說,筆記本電腦内置了一個攝像頭,我們用0代表,其餘的外接攝像頭我們可以按照具體的情況來使用1,2,3··· ··· 來進行調用和資料的采集。

有的時候,我們初始化完成了,但是并不知道到底成功了沒有,這時,我們可以調用cap.isOpened()方法來偵測。

預設的窗體界面是640X480的,但是我們卻也可以修改,有固定方式和可任意調節方式。

固定大小方式:

視窗可任意調節方式:

實時顯示就是将OpenCV采集到的一幀一幀的資料實時的顯示到界面窗體上。

如此,便可以實時的擷取到攝像頭采集到的資料了。

學會了如何采集資料,下一步就是将采集到的資料寫入到一個視訊檔案中。這就涉及到了編碼的問題了,因為将圖檔寫到視訊檔案中需要實時的壓縮,處理。是以我們的電腦上要裝有相應的碼庫。

一開始我是用的fourcc是:

但是總是不能正确的錄制出視訊檔案,顯示大小為0KB。最後發現是電腦上沒有響應的視訊解碼庫導緻的。

解決辦法:

一開始按照網上的參考資料,說是将out的第二個參數寫為-1,這樣運作的時候會彈出系統擁有的壓縮方式,即可解決。但是在部落客親試之下,完美的失敗了。 :(

第二種方式,部落客親測有效,改變了fourcc的類型。

下面看一個完整的錄制視訊的小例子。

OpenCV Python 錄制視訊

親測有效!

本次試驗收獲有:

如何使用OpenCV配合Python實時捕獲攝像頭資料

windows下錄制視訊檔案大小為零的異常

修改圖像顯示窗體大小的兩種方式

錄制視訊的過程中,輸出為快慢鏡頭的調節方式