日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

读取视频文件python-opencv

發(fā)布時間:2023/12/16 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读取视频文件python-opencv 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于cv.imread()函數(shù)只能讀取圖像的數(shù)據(jù),不能讀取視頻文件,所以對于數(shù)據(jù)需要從攝像頭加載的要求,需要使用cv.VideoCapture()函數(shù),通過該函數(shù)可以對攝像頭進(jìn)行調(diào)用,并讀取視頻文件數(shù)據(jù)。該函數(shù)是專門用于處理視頻文件讀取。

文章目錄

  • 前言
  • 二、使用步驟
    • 1.代碼展示
    • 2.get(propId)函數(shù)
  • cv.VideoCapture()函數(shù)調(diào)用攝像頭


前言

cv.VideoCapture()函數(shù),通過該函數(shù)可以對攝像頭進(jìn)行調(diào)用,并讀取視頻文件數(shù)據(jù)。


# 一、cv.VideoCapture()函數(shù)是什么?

從函數(shù)的原型中可以得知,cv.VideoCapture()函數(shù)是用于構(gòu)造一個能夠讀取與處理視頻文件的的視頻對象,并且函數(shù)可以將該視頻對象返回。

<VideoCapture object> = cv.VideoCapture() <VideoCapture object> = cv. VideoCapture(filename, [,apipreference])#filename:讀取的視頻文件名稱。# apipreference:讀取數(shù)據(jù)時設(shè)置的屬性,例如編碼格式、是否調(diào)用OpenNI等

函數(shù)的主要作用就是定義一個視頻對象,即默認(rèn)構(gòu)造函數(shù)video = cv.VideoCapture(),通過cv.VideoCapture()函數(shù)僅僅是創(chuàng)建VideoCapture對象video,如果需要具體讀取視頻文件,需要使用該VideoCapture對象的open()函數(shù),通過open()函數(shù)指出視頻文件的路徑以及名稱。
例如video.open(“./videos/test.mp4”)表示video視頻對象讀取在本級文件夾中videos的test.mp4視頻文件,將視頻數(shù)據(jù)返回。而且當(dāng)我們輸入錯誤的視頻文件名稱時,程序不會報錯,而且會繼續(xù)執(zhí)行,但是當(dāng)使用視頻對象變量時,程序?qū)箦e。為了避免這個問題,需要通過VideoCapture對象video中的isOpened()函數(shù)判斷是否成功讀取到視頻文件數(shù)據(jù)。如果讀取成功返回值為True;如果讀取失敗,則返回值為False,

二、使用步驟

1.代碼展示

代碼如下(示例):

import cv2 as cvif __name__ == '__main__':video = cv.VideoCapture()video.open('./video/test.avi')#判斷是否成功創(chuàng)建視頻流while video.isOpened():ret,frame = video.read()print(ret)if ret is True:cv.imshow('video',frame)#設(shè)置播放速速cv.waitKey(int(1000 / video.get(cv.CAP_PROP_FPS)))#按下q鍵退出if cv.waitKey(1) & 0xFF == ord('q'):breakelse:break#輸出相關(guān)參數(shù)信息print('視頻中的圖像寬度{}'.format(video.get(cv.CAP_PROP_FRAME_WIDTH))) print('視頻中的圖像高度{}'.format(video.get(cv.CAP_PROP_FRAME_HEIGHT))) print('視頻幀率{}'.format(video.get(cv.CAP_PROP_FPS))) print('視頻幀數(shù){}'.format(video.get(cv.CAP_PROP_FRAME_COUNT))) #釋放資源并關(guān)閉窗口video.release()cv.destroyAllWindows()

cv.VideoCapture()函數(shù)不僅僅可以將讀取讀取的視頻數(shù)據(jù)賦值給申明的變量,而且在讀取文件種類上包含多種格式,例如普通視頻文件(video.avi)、圖像序列或者視頻流的URL。通過cv.VideoCapture()函數(shù)創(chuàng)建一個視頻對象之后,可以利用cv.VideoCapture()對象中的read()函數(shù)讀取一幀圖像,例如ret,frame=video.read(),其中讀取一張圖像的數(shù)據(jù)存放在frame中;ret中存放成功讀取圖片的標(biāo)志位,如果讀取成功,則返回True;若讀取失敗,則返回False。通常,可以利用ret標(biāo)志判斷視頻文件是否到達(dá)了末尾。

2.get(propId)函數(shù)

cv.VideoCapture對象同時可以利用get(propId)函數(shù)來查看視頻的屬性,通過設(shè)定propId獲取不同的視頻屬性,例如視頻的寬度、高度、幀數(shù)等,其取值為0~18的任意整數(shù),如圖2-4所示。Get()方法中propId的可選標(biāo)志。


## 3. get()方法中propId的可選標(biāo)志 標(biāo)志簡記含義
cv.CAP_PROP_POS_MSEC0視頻文件的當(dāng)前位置(以毫秒為單位)
cv.CAP_PROP_POS_FRAMES1下一個被解碼的幀索引,以0為起點(diǎn)
cv.CAP_PROP_POS_AVI_RATIO2視頻文件的相關(guān)位置,0表示開始,1表示結(jié)束
cv.CAP_PROP_FRAME_WIDTH3視頻流中圖像的寬度
cv.CAP_PROP_FRAME_HEIGHT4視頻流中圖像的高度
cv.CAP_PROP_FPS5視頻流中圖像的幀率(每秒幀數(shù))
cv.CAP_PROP_FOURCC6編解碼器的4字符代碼
cv.CAP_PROP_FRAME_COUNT7視頻流中的幀數(shù)
cv.CAP_PROP_FRAME8返回的Mat對象的格式
cv.CAP_PROP_MODE9指示當(dāng)前捕捉的模式
cv.CAP_PROP_BRIGHTNESS10圖像的亮度(僅相機(jī))
cv.CAP_PROP_CONTRAST11圖像的對比度(僅相機(jī))
cv.CAP_PROP_STAURATION12圖像飽和度(僅相機(jī))
cv.CAP_PROP_HUE13圖像的色相(僅相機(jī))
cv.CAP_PROP_GAIN14圖像的增益(僅相機(jī))
cv.CAP_PROP_EXPOSURE15曝光(僅相機(jī))
cv.CAP_PROP_CONVERT_RGB16布爾值,確定是否應(yīng)該將圖像轉(zhuǎn)換為RGB格式
cv.CAP_PROP_WHITE_BALANCE_BLUE_U17白平衡
cv.CAP_PROP_RECTIFCATION18立體相機(jī)校正標(biāo)記

cv.VideoCapture()函數(shù)調(diào)用攝像頭

cv.VideoCapture()函數(shù)同時也可以通過調(diào)用攝像頭的方式來獲取視頻,其獲取方式與從文件中讀取視頻類似。函數(shù)同樣返回一個視頻對象,只是參數(shù)變成了攝像頭索引。由于攝像頭拍攝的畫面可能與實(shí)際相反,所以為了解決這個問題,將frame中的數(shù)據(jù)進(jìn)行水平翻轉(zhuǎn)處理,即frame=cv.flip(frame,1),實(shí)現(xiàn)了攝像頭拍攝的圖像進(jìn)行翻轉(zhuǎn)。

<VideoCapture object> = cv. VideoCapture(index, [,apipreference])#index:攝像頭索引,參數(shù)0表示使用計算機(jī)默認(rèn)攝像頭,同樣改用其他參數(shù)可以調(diào)用其他攝像頭。# apipreference:讀取數(shù)據(jù)時設(shè)置的屬性,例如編碼格式、是否調(diào)用OpenNI等

總結(jié)

以上是生活随笔為你收集整理的读取视频文件python-opencv的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。