最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
万年县| 江永县| 黎平县| 乐清市| 龙胜| 铜陵市| 扶绥县| 阳东县| 长丰县| 湟源县| 轮台县| 辛集市| 金坛市| 桃源县| 多伦县| 光山县| 西盟| 深州市| 咸丰县| 罗平县| 闽侯县| 余庆县| 麟游县| 葫芦岛市| 八宿县| 沛县| 金阳县| 中卫市| 呈贡县| 株洲市| 疏附县| 邳州市| 雷山县| 东乌| 梁河县| 靖州| 比如县| 得荣县| 西林县| 蒙阴县| 交口县|