#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.視頻路徑有錯誤。