#include "highgui.h"
using namespace cv;
using namespace std;
int main()
{
cvNamedWindow("example");
CvCapture * capture = cvCreateFileCapture("H:\\資料\\opencv相關資料\\OpenCV教程\\圖像與視頻\\video.long.mjpg.avi");
IplImage * frame;
while(1)
{
frame = cvQueryFrame(capture);
if(!frame)break;
cvShowImage("example",frame);
char c = cvWaitKey(33);
if(c==27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example");
}
1.cvNamedWindow("example");
創建命名窗口
2.CvCapture * capture = cvCreateFileCapture("H:\\資料\\opencv相關資料\\OpenCV教程\\圖像與視頻\\video.long.mjpg.avi");
cvCreateFileCapture函數讀取路徑下的視頻文件,把幀信息指針返回到CvCapture結構體指針中,包含關於要讀入的avi文件的狀態信息
此次調用返回avi視頻文件的開頭。
3.frame = cvQueryFrame(capture);
需要不斷循環讀取下一幀,因此需要while循環,只有當用戶按鍵或者視頻讀取完畢時才跳出循環。
cvQueryFrame函數的功能是:根據CvCapture指針提供的狀態信息,抓取幀信息保存到IplImage指針里。
4.char c = cvWaitKey(33);
cvWaitKey函數的作用有兩個:①控制幀率,我的理解是控制視頻播放的快慢,返回值是-1;
②接受鍵盤輸入,返回值為該鍵盤對應的asiccII碼。
5.cvReleaseCapture(&capture);
cvDestroyWindow("example");
釋放CvCapture指針的內存空間,同時關閉命名窗口。
需要注意的是:
如果cvCreateFileCapture的返回值是0,則有以下可能:
1.電腦中沒有安裝AVI解碼器。
2.視頻路徑有錯誤。
