国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[CV2] 讀取視頻

2022-04-29 12:55 作者:毒蘿卜精  | 我要投稿

[注:文章里的CV2均為小寫]


OpenCV的VideoCapture類和VideoWriter類提供了視頻處理功能,支持各種格式的視頻文件。

讀取并顯示視頻步驟:

  1. 將視頻文件或者攝像頭作為數(shù)據(jù)源來(lái)創(chuàng)建VideoCapture對(duì)象

  2. 調(diào)用VideoCapture對(duì)象的read()方法獲取視頻中的幀,每一幀都是一幅圖像

  3. 調(diào)用VideoWriter對(duì)象的write()方法將幀寫入視頻文件,或者調(diào)用CV2.imshow()函數(shù)在窗口中顯示幀(即播放視頻)


播放視頻的實(shí)質(zhì)是逐幀讀取和顯示幀圖像

僅能讀取視頻畫面,無(wú)法獲得視頻聲音


播放視頻

import CV2 as cv?? # 導(dǎo)入庫(kù)換名為cv
bga=cv.VideoCapture('star.mpg') #? 創(chuàng)建對(duì)象,導(dǎo)入視頻
fps=int(bga.get(cv.CAP_PROP_FPS)) # 讀取視頻的幀速率

# 讀取視頻的高和寬,看起來(lái)麻煩,不過是get()方法和參數(shù)罷了

size=(int(bga.get(cv.CAP_PROP_FRAME_HEIGHT)),int(bga.get(cv.CAP_PROP_FRAME_WIDTH)))
print('幀速率:',fps)? # 幀速率: 30
print('大?。?#39;,size) # 大?。?(512, 512)

success,frame=bga.read()? # 讀取第一幀作為開始
print(success)? # True
print(type(frame)) # <class 'numpy.ndarray'>

while success: ? ? ? ? ? ? ? ? ? ? ? # 循環(huán)讀視頻幀,直到視頻結(jié)束,用True代替會(huì)在播放完畢后報(bào)錯(cuò)
? cv.imshow('BGA',frame) ? ? ? ? ? ? #在'BGA'窗口中顯示幀圖像
? success,frame=bga.read() ? ? ? ? ? ? ? #讀下一幀
? key=cv.waitKey(fps) ? ? ? ?????????????????????#設(shè)定了刷新率,決定了視頻時(shí)長(zhǎng)和速度 單位為毫秒
? if key==27: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #按【Esc】鍵結(jié)束播放
? ? ? break
bga.release() ? ? ? ? ? ? ? ? ? ? ? ? ?? #播放完畢自動(dòng)關(guān)閉視頻,點(diǎn)擊X關(guān)掉的是一幀幀圖像


fps和size都不能帶小數(shù)點(diǎn),所以需要int()轉(zhuǎn)化為整數(shù)

經(jīng)測(cè)試如果設(shè)定尺寸和原視頻不一樣,或大或小都無(wú)法播放

success是布爾類型,如果有讀取到幀返回True,沒讀取到幀返回False

frame是的值是一個(gè)NumPy數(shù)組,也就是一幀的圖像信息


【BOFXVII】Firmament star【BGA】

[拖動(dòng)窗口時(shí)播放會(huì)暫停,松開會(huì)從暫停處開始繼續(xù)播放,直至最后一幀]


讀取顯示并寫入視頻

只需要在上面代碼的基礎(chǔ)上加上紅色代碼即可

import CV2 as cv
bga=cv.VideoCapture('star.mpg')
fps=int(bga.get(cv.CAP_PROP_FPS))

size=(int(bga.get(cv.CAP_PROP_FRAME_HEIGHT)),int(bga.get(cv.CAP_PROP_FRAME_WIDTH)))

success,frame=bga.read()

while success:

? vw.write(frame)??????????????????? ??? ??? ?#將幀寫入文件

? cv.imshow('BGA',frame)
? success,frame=bga.read()
? key=cv.waitKey(fps)
? if key==27:
? ? ? break
bga.release()

提前按Esc終止播放寫入的視頻會(huì)截止到終止播放時(shí)刻

寫入視頻的幀率和設(shè)定的fps參數(shù)值有關(guān),和播放幀率無(wú)關(guān)


把視頻寫入了star2.avi文件



常用的解碼器格式:

XVID的MPEG-1編碼格式,視頻文件擴(kuò)展名為.avi

cv.VideoWriter_fourcc('P','I','M','1')


Microsoft的MPEG-4編碼格式,視頻文件擴(kuò)展名為.avi

cv.VideoWriter_fourcc('M','P','4','2')?


XVID的MPEG-4編碼格式,視頻文件擴(kuò)展名為.avi

cv.VideoWriter_fourcc('X','V','I','D')


XVID的MPEG-4編碼格式,視頻文件擴(kuò)展名為.flv

cv.VideoWriter_fourcc('F','L','V','1')



總結(jié):


讀取并顯示視頻:

創(chuàng)建VideoCapture對(duì)象

???=cv.VideoCapture('XXX.xxx')

VideoCapture對(duì)象read()方法獲取視頻中的幀

B,F=???.read()

調(diào)用cv.imshow()函數(shù)在窗口中顯示幀圖像

cv.imshow('窗口名',F)


讀取并轉(zhuǎn)存視頻:

創(chuàng)建VideoWriter對(duì)象,參數(shù)都不能省略

???=cv.VideoWriter('XXX.xxx',cv.解碼器格式,fps,size)

VideoCapture對(duì)象read()方法獲取視頻中的幀

B,F=???.read()

VideoWriter對(duì)象write()方法把讀取到的幀寫入文件

???.write(F)



本文章出現(xiàn)的視頻源自BOFXVII比賽中的《Firmament Star》

[CV2] 讀取視頻的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
武强县| 凤台县| 新田县| 依兰县| 宁安市| 营口市| 洞口县| 英吉沙县| 井冈山市| 安吉县| 大宁县| 休宁县| 息烽县| 石狮市| 洮南市| 青岛市| 喀喇沁旗| 虹口区| 鄂伦春自治旗| 武安市| 朝阳市| 通州市| 青海省| 潢川县| 大同市| 新巴尔虎左旗| 武隆县| 苏尼特右旗| 宁阳县| 英超| 库尔勒市| 阿坝县| 达拉特旗| 北辰区| 长顺县| 襄垣县| 阜城县| 南靖县| 静安区| 巢湖市| 集贤县|