python opencv 录制视频_OpenCV Python 录制视频
學到實用OpenCV調用筆記本電腦的攝像頭,并錄制視頻保存到本地硬盤的時候,出現了一點故障,那就是獲取到的文件總是為0KB。經過一番查找,終于找到了解決辦法。
調用攝像頭
調用攝像頭作為本實驗的基礎是必不可少的,因為我們很有可能在初始化的這一步出錯,而導致整個視頻錄制的失敗。
引入庫支持
import cv2
初始化
初始化的時候,參數可以是整數,也可以是外部的視頻文件的名稱。這里需要強調的是整數類型。
通常來說,筆記本電腦內置了一個攝像頭,我們用0代表,其余的外接攝像頭我們可以按照具體的情況來使用1,2,3··· ··· 來進行調用和數據的采集。
cap = cv2.VideoCapture(0)
有的時候,我們初始化完成了,但是并不知道到底成功了沒有,這時,我們可以調用cap.isOpened()方法來偵測。
調整界面大小
默認的窗體界面是640X480的,但是我們卻也可以修改,有固定方式和可任意調節方式。
固定大小方式:
cap = cv2.VideoCapture(0)
# cap.set(3,1080)
# cap.set(4,720)
窗口可任意調節方式:
cv2.namedWindow(cv2.WINDOW_NORMAL)
實時顯示
實時顯示就是將OpenCV采集到的一幀一幀的數據實時的顯示到界面窗體上。
import cv2
# 初始化攝像頭
cap = cv2.VideoCapture(0)
while cap.isOpened():
# 采集一幀一幀的圖像數據
isSuccess,frame = cap.read()
# 實時的將采集到的數據顯示到界面上
if isSuccess:
cv2.imshow("My Capture",frame)
# 實現按下“q”鍵退出程序
if cv2.waitKey(1)&0xFF == ord('q'):
break
# 釋放攝像頭資源
cap.release()
cv2.destoryAllWindows()
如此,便可以實時的獲取到攝像頭采集到的數據了。
錄制視頻并保存
學會了如何采集數據,下一步就是將采集到的數據寫入到一個視頻文件中。這就涉及到了編碼的問題了,因為將圖片寫到視頻文件中需要實時的壓縮,處理。所以我們的電腦上要裝有相應的碼庫。
fourcc問題解決
一開始我是用的fourcc是:
fourcc = cv2.VideoWriter_fourcc(*"XVID")
但是總是不能正確的錄制出視頻文件,顯示大小為0KB。最后發現是電腦上沒有響應的視頻解碼庫導致的。
解決辦法:
一開始按照網上的參考資料,說是將out的第二個參數寫為-1,這樣運行的時候會彈出系統擁有的壓縮方式,即可解決。但是在博主親試之下,完美的失敗了。 :(
第二種方式,博主親測有效,改變了fourcc的類型。
fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")
代碼實現
下面看一個完整的錄制視頻的小例子。
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/9/7'
# __Desc__ = 使用Python借助opencv實現對圖像的讀取,寫入
import cv2
import numpy as np
# 選取攝像頭,0為筆記本內置的攝像頭,1,2···為外接的攝像頭
cap = cv2.VideoCapture(0)
# cap.set(3,1080)
# cap.set(4,720)
# 為保存視頻做準備
fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")
# 第三個參數則是鏡頭快慢的,20為正常,小于二十為慢鏡頭
out = cv2.VideoWriter('output2.avi', fourcc,3.0,(640,480))
while True:
# 一幀一幀的獲取圖像
ret,frame = cap.read()
if ret == True:
frame = cv2.flip(frame, 1)
# 在幀上進行操作
# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# 開始保存視頻
out.write(frame)
# 顯示結果幀
cv2.imshow("frame", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 釋放攝像頭資源
cap.release()
out.release()
cv2.destroyAllWindows()
效果展示
親測有效!
總結
本次試驗收獲有:
如何使用OpenCV配合Python實時捕獲攝像頭數據
windows下錄制視頻文件大小為零的異常
修改圖像顯示窗體大小的兩種方式
錄制視頻的過程中,輸出為快慢鏡頭的調節方式
總結
以上是生活随笔為你收集整理的python opencv 录制视频_OpenCV Python 录制视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你如何找到最适合自己的配置如何查看自己
- 下一篇: 仙山小农获得飞鱼坐骑方法