【OpenCV學習】一、顯示圖像和播放視頻

萬里之行第一步,打開圖片和視頻,然後才能進行下一步操作。(《學習OpenCV》P18-23,P30-31)

cvLoadImage中的參數爲圖片地址,cvCreateFileCapture中的參數爲視頻地址,斜槓要用\\或者/,不要直接用\,否則會出問題。

基本步驟都差不多,圖片是用一個IplImage*類型的img接收打開的圖片,然後建個窗口,將圖片顯示在窗口。

視頻是用一個CvCapture*類型的capture接收打開的視頻,然後一幀幀讀視頻裏的每張圖片,然後顯示在窗口。不過每次循環要用cvWaitKay等待一個時間間隔,不然所有幀擠在同一時刻是打不開的。

#include"highgui.h"

int main(){
	//顯示圖像
	IplImage* img = cvLoadImage("D:\\OPENCV實驗\\lena.jpg");
	cvNamedWindow("顯示圖像",CV_WINDOW_AUTOSIZE);
	cvShowImage("顯示圖像",img);

	//播放視頻
	CvCapture* capture = cvCreateFileCapture("D:\\OPENCV實驗\\David.gif");
	cvNamedWindow("播放視頻", CV_WINDOW_AUTOSIZE);
	while (1){
		img = cvQueryFrame(capture);
		if (!img){
			break;
		}
		cvShowImage("播放視頻", img);
		cvWaitKey(10);
	}

	cvReleaseImage(&img);
    cvReleaseCapture(&capture);
	cvDestroyWindow("顯示圖像");
	cvDestroyWindow("播放視頻");
	return(0);
}

當然,cvCreateFileCapture是打開一個視頻文件,實際上也可以直接打開攝像頭,反正都是視頻流,和打開視頻文件幾乎一樣,函數換成cvCreateFileCapture了而已。

#include"highgui.h"

int main(){
	IplImage* img;
	CvCapture* capture = cvCreateCameraCapture(0);
	cvNamedWindow("攝像機", CV_WINDOW_AUTOSIZE);
	while (1){
		img = cvQueryFrame(capture);
		if (!img){
			break;
		}
		cvShowImage("攝像機", img);
		cvWaitKey(10);
	}

	cvReleaseImage(&img);
	cvReleaseCapture(&capture);
	cvDestroyWindow("攝像機");
	return(0);
}

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章