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實現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼
這篇文章主要為大家詳細介紹了如何利用python實現(xiàn)word、excel、ppt批量轉(zhuǎn)pdf文件,文中的示例代碼講解詳細,有需要的小伙伴可以參考下2023-09-09- 我們知道python只定義了6種數(shù)據(jù)類型,字符串,整數(shù),浮點數(shù),列表,元組,字典。但是C語言中有些字節(jié)型的變量,在python中該如何實現(xiàn)呢?這點頗為重要,特別是要在網(wǎng)絡(luò)上進行數(shù)據(jù)傳輸?shù)脑挕?/div> 2014-06-06
python實現(xiàn)class對象轉(zhuǎn)換成json/字典的方法
這篇文章主要介紹了python實現(xiàn)class對象轉(zhuǎn)換成json/字典的方法,結(jié)合實例形式分析了Python類型轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下2016-03-03最新評論