视频操作_01视频读写:视频读写+读取视频+保存视频
生活随笔
收集整理的這篇文章主要介紹了
视频操作_01视频读写:视频读写+读取视频+保存视频
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 從文件中讀取視頻并播放
在OpenCV中我們要獲取一個視頻,需要創建一個VideoCapture對象,指定你要讀取的視頻文件:
1.創建讀取視頻的對象
cap = cv.VideoCapture(filepath)參數:
????????filepath: 視頻文件路徑
2.視頻的屬性信息
2.1. 獲取視頻的某些屬性,
retval = cap.get(propId)參數:
- propId: 從0到18的數字,每個數字表示視頻的屬性
常用屬性有:
2.2 修改視頻的屬性信息
cap.set(propId,value)參數:
- proid: 屬性的索引,與上面的表格相對應
- value: 修改后的屬性值
判斷圖像是否讀取成功
isornot = cap.isOpened()若讀取成功則返回true,否則返回False
獲取視頻的一幀圖像
參數:
- ret: 若獲取成功返回True,獲取失敗,返回False
- Frame: 獲取到的某一幀的圖像
調用cv.imshow()顯示圖像,在顯示圖像時使用cv.waitkey()設置適當的持續時間,如果太低視頻會播放的非常快,如果太高就會播放的非常慢,通常情況下我們設置25ms就可以了。
最后,調用cap.realease()將視頻釋放掉
示例:
import numpy as np import cv2 as cv # 1.獲取視頻對象 cap = cv.VideoCapture('img/01.mp4') # 2.判斷是否讀取成功 while(cap.isOpened()):# 3.獲取每一幀圖像#ret: 若獲取成功返回True,獲取失敗,返回False #Frame: 獲取到的某一幀的圖像ret, frame = cap.read() # 4. 獲取成功顯示圖像if ret == True:cv.imshow('frame',frame)# 5.每一幀間隔為25msif cv.waitKey(25) & 0xFF == ord('q'):break # 6.釋放視頻對象 cap.release() cv.destroyAllwindows()
2 保存視頻
在OpenCV中我們保存視頻使用的是VedioWriter對象,在其中指定輸出文件的名稱,如下所示:
創建視頻寫入的對象
out = cv2.VideoWriter(filename,fourcc, fps, frameSize)參數:
- filename:視頻保存的位置
- fourcc:指定視頻編解碼器的4字節代碼
- fps:幀率
- frameSize:幀大小
設置視頻的編解碼器,如下所示,
retval = cv2.VideoWriter_fourcc( c1, c2, c3, c4 )參數:
- c1,c2,c3,c4: 是視頻編解碼器的4字節代碼,在fourcc.org中找到可用代碼列表,與平臺緊密相關,常用的有:
????????????????????????在Windows中:DIVX(.avi)
????????????????????????在OS中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。
- 利用cap.read()獲取視頻中的每一幀圖像,并使用out.write()將某一幀圖像寫入視頻中。
- 使用cap.release()和out.release()釋放資源。
示例:
import cv2 as cv# 1. 讀取視頻 cap = cv.VideoCapture("img/01.mp4")# 2. 獲取圖像的屬性(寬和高),并將其轉換為整數 frame_width = int(cap.get(3)) frame_height = int(cap.get(4))# 3. 創建保存視頻的對象,設置編碼格式,幀率,圖像的寬高等 out = cv.VideoWriter('outpy.avi', cv.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height)) while (True):# 4.獲取視頻中的每一幀圖像ret, frame = cap.read()if ret == True:# 5.將每一幀圖像寫入到輸出文件中out.write(frame)else:break# 6.釋放資源 cap.release() out.release() cv.destroyAllWindows()總結
讀取視頻:
- ????????讀取視頻:cap = cv.VideoCapture()
- ????????判斷讀取成功:cap.isOpened()
- ????????讀取每一幀圖像:ret,frame = cap.read()
- ????????獲取屬性:cap.get(proid)
- ????????設置屬性:cap.set(proid,value)
- ????????資源釋放:cap.release()
保存視頻
- ????????保存視頻: out = cv.VideoWrite()
- ????????視頻寫入:out.write()
- ????????資源釋放:out.release()
總結
以上是生活随笔為你收集整理的视频操作_01视频读写:视频读写+读取视频+保存视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python代码计算字数_Python计
- 下一篇: 华为升级harmonyos的机型名单,华