opencv2中,提供了兩個視頻操作相干的類,VideoCapture和VideoWriter,固然也有相對應的構造函數。
對VideoCapture,其有以下幾個操作函數:
open(const string &filename) //打開視頻文件
open(int device) //打開攝像頭,device為裝備序號
isOpened() //判斷視頻文件或攝像頭是不是打開,其返回值為bool型
release() //關閉視頻文件或攝像頭
grab() //獲得視頻或攝像頭下1幀,若獲得成功,則返回TRUE,其函數類型也是bool型。
retrieve(Mat& image , int channel=()) //解碼剛剛獲得到的1幀圖象,并將其賦給image,這個函數的返回值也是bool型。
read(Mat& image) //獲得、解碼和讀取視頻的下1幀。在opencv中,其用“>>”操作符重載了這個函數,即 video >> image
get(int propId) //返回視頻的屬性
propId取值不同,則返回的屬性也不同。當propId取以下值時:
CV_CAP_PROP_POS_MSEC 以毫秒或時間戳的情勢當前視頻文件的位置
CV_CAP_PROP_POS_FRAMES 以0開始的視頻幀解碼捕獲索引
CV_CAP_PROP_POS_AVI_RATIO 視頻的相對位置,0為開始,1為結束
CV_CAP_PROP_FRAME_WIDTH 視頻幀圖片的寬度
CV_CAP_PROP_FRAME_HEIGHT 視頻幀圖片的高度
CV_CAP_PROP_FPS 幀率
CV_CAP_PROP_FOURCC 視頻的4字符代碼
CV_CAP_PROP_FRAME_COUNT 視頻的總幀數
CV_CAP_PROP_FORMAT 視頻的圖片格式
CV_CAP_PROP_MODE 后端特定值唆使當前捕獲模式
下面幾個屬性只在攝像模式下有效:
CV_CAP_PROP_BRIGHTNESS 圖象的亮度
CV_CAP_PROP_CONTRAST 圖象對照度
CV_CAP_PROP_SATURATION 圖象的飽和度
CV_CAP_PROP_HUE 圖象的色度
CV_CAP_PROP_EXPOSURE 圖象的暴光
CV_CAP_PROP_CONVERT_RGB圖象是不是轉換為RGB型
set(int propId) //設置屬性,其參數的取值和get函數的取值1樣
對VideoWriter,其有以下幾個操作函數:
open(const string &filename, int fourcc, double fps, Size frameSize, color = true)
以上幾個參數在上文中均已介紹過了。
isOpened() //與前面的是1個意思
write(const Mat& image) //opencv中也一樣重載了這個函數,即用操作符<<
下面看段程序,程序的功能是將1個段視頻變小,即原來1024*780的視頻,變成320*280,為了多使用幾個視頻操作函數,所以有些地方可以大大簡化或修改的我沒有修改,為了展現1下各個函數的用法。