python利用cv2庫讀取和保存視頻的操作步驟
python讀取和保存視頻
讀取視頻
用cv2庫的好處是返回的就是arrary,不用轉(zhuǎn)換,但這種方法是從頭讀到尾
利用cv2庫讀取視頻,代碼實現(xiàn)如下:
import cv2
cap = cv2.VideoCapture('C:\\Users\\xxx\\Desktop\\sweet.mp4')
while(cap.isOpened()):
# ret返回布爾值
ret, frame = cap.read()
# 展示讀取到的視頻矩陣
cv2.imshow('image', frame)
# 鍵盤等待
k = cv2.waitKey(20)
# q鍵退出
if k & 0xff == ord('q'):
break
# 釋放資源
cap.release()
# 關(guān)閉窗口
cv2.destroyAllWindows()
讀取和保存視頻
- 讀取視頻
- 對每一幀進行處理
- 保存視頻
import cv2
# VideoCapture方法是cv2庫提供的讀取視頻方法
cap = cv2.VideoCapture('C:\\Users\\xxx\\Desktop\\sweet.mp4')
# 設(shè)置需要保存視頻的格式“xvid”
# 該參數(shù)是MPEG-4編碼類型,文件名后綴為.avi
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 設(shè)置視頻幀頻
fps = cap.get(cv2.CAP_PROP_FPS)
# 設(shè)置視頻大小
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# VideoWriter方法是cv2庫提供的保存視頻方法
# 按照設(shè)置的格式來out輸出
out = cv2.VideoWriter('C:\\Users\\xxx\\Desktop\\out.avi',fourcc ,fps, size)
# 確定視頻打開并循環(huán)讀取
while(cap.isOpened()):
# 逐幀讀取,ret返回布爾值
# 參數(shù)ret為True 或者False,代表有沒有讀取到圖片
# frame表示截取到一幀的圖片
ret, frame = cap.read()
if ret == True:
# 垂直翻轉(zhuǎn)矩陣
frame = cv2.flip(frame,0)
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 釋放資源
cap.release()
out.release()
# 關(guān)閉窗口
cv2.destroyAllWindows()
cv2.waitKey()是一個鍵盤綁定函數(shù)。它的時間量度是毫秒ms。函數(shù)會等待(n)里面的n毫秒,看是否有鍵盤輸入。若有鍵盤輸入,則返回按鍵的ASCII值。沒有鍵盤輸入,則返回-1.一般設(shè)置為0,它將無線等待鍵盤的輸入。
cv2.VideoWriter_fourcc()函數(shù)
fourcc 意為四個字符代碼(Four-Character Codes ),該編碼由四個字符組成,下面是 VideoWriter_fourcc 對象一些常用的參數(shù):
注意:字符順序不能混合
- cv2.VideoWriter_fourcc(‘I’,’4’,’2’,’0’),該參數(shù)是 YUV 編碼類型,文件名后綴為.avi
- cv2.VideoWriter_fourcc(‘P’,’I’,’M’,’I’),該參數(shù)是 MPEG-1 編碼類型,文件名后綴為.avi
- cv2.VideoWriter_fourcc(‘X’,’V’,’I’,’D’),該參數(shù)是 MPEG-4 編碼類型,文件名后綴為.avi
- cv2.VideoWriter_fourcc(‘T’,’H’,’E’,’O’),該參數(shù)是 Ogg Vorbis,文件名后綴為.ogv
- cv2.VideoWriter_fourcc(‘F’,’L’,’V’,1),該參數(shù)是 Flash 視頻,文件名后綴為.flv
cv2.flip()函數(shù)
語法:
cv2.flip(src, flipCode[, dst]) #src為要操作的圖像
flipCode的使用方法:
flipCode=-1 #水平垂直翻轉(zhuǎn) flipCode= 0 #垂直翻轉(zhuǎn) flipCode= 1 #水平翻轉(zhuǎn)
應(yīng)用:
cv2.imshow('img1',cv2.flip(img,-1))#水平垂直翻轉(zhuǎn)
cv2.imshow('img2',cv2.flip(img,0))#垂直翻轉(zhuǎn)
cv2.imshow('img3',cv2.flip(img,1))#水平翻轉(zhuǎn)
到此這篇關(guān)于python利用cv2庫讀取和保存視頻的操作步驟的文章就介紹到這了,更多相關(guān)python讀取和保存視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中pandas對多列進行分組統(tǒng)計的實現(xiàn)
分組統(tǒng)計在很多時候都需要用到,可以實現(xiàn)很多數(shù)據(jù)庫函數(shù)的功能。本文主要介紹了python中pandas對多列進行分組統(tǒng)計的實現(xiàn),感興趣的可以了解一下2021-06-06
如何使用python socket模塊實現(xiàn)簡單的文件下載
這篇文章主要介紹了如何使用python socket模塊實現(xiàn)簡單的文件下載,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09
利用Python實現(xiàn)Markdown文檔格式轉(zhuǎn)換詳解
這篇文章主要介紹了如何利用Python中的MarkItDown庫將多種文件高效轉(zhuǎn)換為Markdown文本,以及如何使用Python-Markdown庫將Markdown文本轉(zhuǎn)換為HTML,需要的可以參考下2025-03-03
Pytorch 如何加速Dataloader提升數(shù)據(jù)讀取速度
這篇文章主要介紹了Pytorch 加速Dataloader提升數(shù)據(jù)讀取速度的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

