opencv播放AVI視頻(2)


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


免責聲明!

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



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