python3將視頻流保存為本地視頻文件
使用python3+opencv3.3.1環(huán)境將視頻流保存為本地視頻文件,具體內(nèi)容如下
1、利用opencv中的VideoCapture類獲取視頻流的鏈接,通過cv2的方法得到該視頻流的幀數(shù)和每幀大小。
2、使用VideoWriter類進(jìn)行視頻編碼
3、通過VideoCapture的read()方法進(jìn)行視頻流解碼成每一幀
4、獲取到每一幀frame,我們就可以對(duì)該幀做圖像算法(例如識(shí)別、圖像加強(qiáng)、灰度變換等)
import cv2
from matplotlib import pyplot as plt
#通過cv2中的類獲取視頻流操作對(duì)象cap
cap = cv2.VideoCapture('rtsp://admin:passwd@10.130.10.111:554/MPEG-4/ch1/main/av_stream')
#調(diào)用cv2方法獲取cap的視頻幀(幀:每秒多少?gòu)垐D片)
fps = cap.get(cv2.CAP_PROP_FPS)
print(fps)
#獲取cap視頻流的每幀大小
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print(size)
#定義編碼格式mpge-4
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2')
#定義視頻文件輸入對(duì)象
outVideo = cv2.VideoWriter('saveDir.avi',fourcc,fps,size)
#獲取視頻流打開狀態(tài)
if cap.isOpened():
rval,frame = cap.read()
print('ture')
else:
rval = False
print('False')
tot=1
c=1
#循環(huán)使用cv2的read()方法讀取視頻幀
while rval:
rval,frame = cap.read()
cv2.imshow('test',frame)
#每間隔20幀保存一張圖像幀
# if tot % 20 ==0 :
# cv2.imwrite('cut/'+'cut_'+str(c)+'.jpg',frame)
# c+=1
tot+=1
print('tot=',tot)
#使用VideoWriter類中的write(frame)方法,將圖像幀寫入視頻文件
outVideo.write(frame)
cv2.waitKey(1)
cap.release()
outVideo.release()
cv2.destroyAllWindows()
結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Appium自動(dòng)化操作微信的教程分享
Appium?是一個(gè)開源的自動(dòng)化測(cè)試工具,支持?Android、iOS?平臺(tái)上的原生應(yīng)用,支持?Java、Python、PHP?等多種語言。本文主要介紹了Python+Appium自動(dòng)化操作微信的教程,希望對(duì)大家有所幫助2023-01-01
詳解Python匿名函數(shù)(lambda函數(shù))
這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例
這篇文章主要介紹了python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
Python實(shí)現(xiàn)為圖片添加水印的示例詳解
這篇文章主要介紹了如何通過Python3實(shí)現(xiàn)添加水印,這樣發(fā)朋友圈,圖片再也不怕被盜了!??!文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下2022-02-02

