教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Open CV視頻讀寫教程【Open CV視頻下載】

更新時(shí)間:2021年07月27日16時(shí)49分 來源:傳智教育 瀏覽次數(shù):

一、從文件中讀取視頻并播放

在OpenCV中我們要獲取一個(gè)視頻,需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象,指定你要讀取的視頻文件:



1. 創(chuàng)建讀取視頻的對(duì)象

cap = cv.VideoCapture(filepath)

參數(shù):

filepath: 視頻文件路徑



2.視頻的屬性信息

2.1. 獲取視頻的某些屬性

retval = cap.get(propId)

參數(shù):

propId: 從0到18的數(shù)字,每個(gè)數(shù)字表示視頻的屬性

常用屬性有:

open cv讀寫視頻



2.2. 修改視頻的屬性信息

cap.set(propId,value)

參數(shù):

·proid: 屬性的索引,與上面的表格相對(duì)應(yīng)

·value: 修改后的屬性值


3.判斷圖像是否讀取成功

isornot = cap.isOpened()

·若讀取成功則返回true,否則返回False


4.獲取視頻的一幀圖像

ret, frame = cap.read()

參數(shù):

·ret: 若獲取成功返回True,獲取失敗,返回False

·Frame: 獲取到的某一幀的圖像


5.調(diào)用cv.imshow()顯示圖像,在顯示圖像時(shí)使用cv.waitkey()設(shè)置適當(dāng)?shù)某掷m(xù)時(shí)間,如果太低視頻會(huì)播放的非??欤绻呔蜁?huì)播放的非常慢,通常情況下我們?cè)O(shè)置25ms就可以了。


6.最后,調(diào)用cap.realease()將視頻釋放

示例:

import numpy as np
import cv2 as cv
# 1.獲取視頻對(duì)象
cap = cv.VideoCapture('DOG.wmv')
# 2.判斷是否讀取成功
while(cap.isOpened()):
    # 3.獲取每一幀圖像
    ret, frame = cap.read()
    # 4. 獲取成功顯示圖像
    if ret == True:
        cv.imshow('frame',frame)
    # 5.每一幀間隔為25ms
    if cv.waitKey(25) & 0xFF == ord('q'):
        break
# 6.釋放視頻對(duì)象
cap.release()
cv.destoryAllwindows()

二、保存視頻

在OpenCV中我們保存視頻使用的是VedioWriter對(duì)象,在其中指定輸出文件的名稱,如下所示:

創(chuàng)建視頻寫入的對(duì)象

out = cv2.VideoWriter(filename,fourcc, fps, frameSize)

參數(shù):

·filename:視頻保存的位置

·fourcc:指定視頻編解碼器的4字節(jié)代碼

·fps:幀率

·frameSize:幀大小

設(shè)置視頻的編解碼器,如下所示,

retval = cv2.VideoWriter_fourcc( c1, c2, c3, c4 )

參數(shù):

·c1,c2,c3,c4: 是視頻編解碼器的4字節(jié)代碼,在fourcc.org中找到可用代碼列表,與平臺(tái)緊密相關(guān),常用的有:

在Windows中:DIVX(.avi)

在OS中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。

·利用cap.read()獲取視頻中的每一幀圖像,并使用out.write()將某一幀圖像寫入視頻中。

·使用cap.release()和out.release()釋放資源。

示例:

import cv2 as cv
import numpy as np
# 1. 讀取視頻
cap = cv.VideoCapture("DOG.wmv")
# 2. 獲取圖像的屬性(寬和高,),并將其轉(zhuǎn)換為整數(shù)
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
# 3. 創(chuàng)建保存視頻的對(duì)象,設(shè)置編碼格式,幀率,圖像的寬高等
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()


《圖像處理OpenCV入門教程》課程導(dǎo)讀


加QQ:435946716,獲取《圖像處理OpenCV入門教程》全套視頻教程+筆記+源碼。



猜你喜歡:

OpenCV圖片相加和混合的方法

什么是OpenCV?OpenCV安裝教程

Harris角點(diǎn)檢測(cè)原理

語言模型-BERT:bert算法介紹

傳智教育人工智能開發(fā)課程

0 分享到:
和我們?cè)诰€交談!