日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python opencv 录制视频_OpenCV Python 录制视频

發(fā)布時(shí)間:2024/8/5 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python opencv 录制视频_OpenCV Python 录制视频 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)到實(shí)用OpenCV調(diào)用筆記本電腦的攝像頭,并錄制視頻保存到本地硬盤的時(shí)候,出現(xiàn)了一點(diǎn)故障,那就是獲取到的文件總是為0KB。經(jīng)過一番查找,終于找到了解決辦法。

調(diào)用攝像頭

調(diào)用攝像頭作為本實(shí)驗(yàn)的基礎(chǔ)是必不可少的,因?yàn)槲覀兒苡锌赡茉诔跏蓟倪@一步出錯(cuò),而導(dǎo)致整個(gè)視頻錄制的失敗。

引入庫(kù)支持

import cv2

初始化

初始化的時(shí)候,參數(shù)可以是整數(shù),也可以是外部的視頻文件的名稱。這里需要強(qiáng)調(diào)的是整數(shù)類型。

通常來說,筆記本電腦內(nèi)置了一個(gè)攝像頭,我們用0代表,其余的外接攝像頭我們可以按照具體的情況來使用1,2,3··· ··· 來進(jìn)行調(diào)用和數(shù)據(jù)的采集。

cap = cv2.VideoCapture(0)

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

調(diào)整界面大小

默認(rèn)的窗體界面是640X480的,但是我們卻也可以修改,有固定方式和可任意調(diào)節(jié)方式。

固定大小方式:

cap = cv2.VideoCapture(0)

# cap.set(3,1080)

# cap.set(4,720)

窗口可任意調(diào)節(jié)方式:

cv2.namedWindow(cv2.WINDOW_NORMAL)

實(shí)時(shí)顯示

實(shí)時(shí)顯示就是將OpenCV采集到的一幀一幀的數(shù)據(jù)實(shí)時(shí)的顯示到界面窗體上。

import cv2

# 初始化攝像頭

cap = cv2.VideoCapture(0)

while cap.isOpened():

# 采集一幀一幀的圖像數(shù)據(jù)

isSuccess,frame = cap.read()

# 實(shí)時(shí)的將采集到的數(shù)據(jù)顯示到界面上

if isSuccess:

cv2.imshow("My Capture",frame)

# 實(shí)現(xiàn)按下“q”鍵退出程序

if cv2.waitKey(1)&0xFF == ord('q'):

break

# 釋放攝像頭資源

cap.release()

cv2.destoryAllWindows()

如此,便可以實(shí)時(shí)的獲取到攝像頭采集到的數(shù)據(jù)了。

錄制視頻并保存

學(xué)會(huì)了如何采集數(shù)據(jù),下一步就是將采集到的數(shù)據(jù)寫入到一個(gè)視頻文件中。這就涉及到了編碼的問題了,因?yàn)閷D片寫到視頻文件中需要實(shí)時(shí)的壓縮,處理。所以我們的電腦上要裝有相應(yīng)的碼庫(kù)。

fourcc問題解決

一開始我是用的fourcc是:

fourcc = cv2.VideoWriter_fourcc(*"XVID")

但是總是不能正確的錄制出視頻文件,顯示大小為0KB。最后發(fā)現(xiàn)是電腦上沒有響應(yīng)的視頻解碼庫(kù)導(dǎo)致的。

解決辦法:

一開始按照網(wǎng)上的參考資料,說是將out的第二個(gè)參數(shù)寫為-1,這樣運(yùn)行的時(shí)候會(huì)彈出系統(tǒng)擁有的壓縮方式,即可解決。但是在博主親試之下,完美的失敗了。 :(

第二種方式,博主親測(cè)有效,改變了fourcc的類型。

fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")

代碼實(shí)現(xiàn)

下面看一個(gè)完整的錄制視頻的小例子。

# coding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

# __author__ = '郭 璞'

# __date__ = '2016/9/7'

# __Desc__ = 使用Python借助opencv實(shí)現(xiàn)對(duì)圖像的讀取,寫入

import cv2

import numpy as np

# 選取攝像頭,0為筆記本內(nèi)置的攝像頭,1,2···為外接的攝像頭

cap = cv2.VideoCapture(0)

# cap.set(3,1080)

# cap.set(4,720)

# 為保存視頻做準(zhǔn)備

fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")

# 第三個(gè)參數(shù)則是鏡頭快慢的,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)

# 在幀上進(jìn)行操作

# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

# 開始保存視頻

out.write(frame)

# 顯示結(jié)果幀

cv2.imshow("frame", frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

else:

break

# 釋放攝像頭資源

cap.release()

out.release()

cv2.destroyAllWindows()

效果展示

親測(cè)有效!

總結(jié)

本次試驗(yàn)收獲有:

如何使用OpenCV配合Python實(shí)時(shí)捕獲攝像頭數(shù)據(jù)

windows下錄制視頻文件大小為零的異常

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

錄制視頻的過程中,輸出為快慢鏡頭的調(diào)節(jié)方式

總結(jié)

以上是生活随笔為你收集整理的python opencv 录制视频_OpenCV Python 录制视频的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。