Opencv讀取視頻


CvCapture 是一個結構體,用來保存圖像捕獲所需要的信息。 opencv提供兩種方式從外部捕獲圖像 一種是從攝像頭中, 一種是通過解碼視頻得到圖像。 兩種方式都必須從第一幀開始一幀一幀的按順序獲取,因此每獲取一幀后都要保存相應的狀態和參數。 比如從視頻文件中獲取,需要保存視頻文件的文件名,相應的解碼器類型,下一次如果要獲取將需要解碼哪一幀等。 這些信息都保存在CvCapture結構中,每獲取一幀后,這些信息都將被更新,獲取下一幀需要將新信息傳給獲取的api接口

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"

int main(int argc, char* argv[])
{
CvCapture *capture=cvCreateFileCapture("E:\\大三下\\考研\\2016考研詞匯5500【戀練有詞 朱偉】\\04 低頻詞匯\\Unit24——26\\Unit 24 初始詞匯.avi");
cvNamedWindow("視頻");
IplImage* src;
while(1)
{
if(capture)
{
src=cvQueryFrame(capture);
cvShowImage("視頻",src);
char c=cvWaitKey(33);
if(c==27)
break;
}
}

cvReleaseCapture(&capture);
cvDestroyWindow("視頻");

return 0;
}

讀取視頻的步驟:

1、創建一個窗口:cvNamedWindow(name,flags);

2、創建一個指針,指向要打開的視頻文件:CvCapture *capture=cvCreateFileCapture("視頻路徑");  返回該視頻的一些信息

3、讀取視頻當中當前幀的下一幀:src=cvQueryFrame(capture);

4、在窗口中顯示讀取到的幀:cvShowImage("視頻",src);

 

相關函數介紹:

1、cvCreateFileCapture(char*name);  通過輸入要讀取的avi文件的路徑,然后,該函數返回一個指向CvCapture結構體的指針。

2、cvQueryFrame(capture); 輸入一個CvCapture類型的指針,該函數主要功能是將視頻文件的下一幀加載到內存。與cvLoadImage的不同之處是,該函數不重新分配內存空間

3、cvWaitKey(33);  當前幀被顯示后,等待33毫秒。如果用戶觸發了一個按鍵,c會被設置成這個按鍵的ASCII碼,否則會被設置成-1。 cvWaitKey(33)在此處的另外一個作用是,控制幀率。這里表示每讀一幀就停33毫秒,則每秒讀的幀數即幀率是1000/33

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM