opencv 顯示一個圖片/播放視訊
#include"highgui.h"
int main(int argc,char **argv)
{
IplImage *img=NULL;
char *imgname="E:/實驗/image/1.jpg";
img=cvLoadImage(imgname);//cvLoadImage載入一個圖片 並返回一個IplImage指標
cvNamedWindow("test",0);//建立一個叫test的視窗,視窗大小固定
cvShowImage("test",img);//在視窗test中顯示圖片
cvWaitKey(0);///等待按鍵進行下一步操作,若引數為正整數,則停留一段設定的時間
cvReleaseImage(&img);//釋放圖片所佔記憶體
cvDestroyWindow("test");//銷燬視窗
return 0;
}
//播放視訊
#include"highgui.h"
int main(int argc,char **argv)
{
//播放視訊,不過沒聲音
cvNamedWindow("test",CV_WINDOW_AUTOSIZE);//建立一個test視窗
CvCapture*capture=cvCreateFileCapture("E:/實驗/image/adr.mkv");//讀入一個視訊檔案並返回一個CvCapture指標(包括了讀入視訊的所有資訊)
IplImage *frame;//儲存視訊中的每一幀圖片
while(1)//迴圈體內讀取capture中的每一幀圖片
{
frame=cvQueryFrame(capture);//cvQueryFrame用來將下一幀視訊檔案載入記憶體,並返回當前幀的指標
// cvLoadImage與cvQueryFrame的區別是前者為影象分配記憶體空間,所以當程式結束時要釋放記憶體空間,
//而後者使用已經在cvCapture結構中分配好的記憶體,因此沒必要再呼叫cvReleaseImage
if(!frame) break;//判斷視訊是否結束
cvShowImage("test",frame);
char c=cvWaitKey(33);//當前幀顯示後等候33ms,如果期間使用者出發了一個按鍵,c會被設定成這個按鍵的ASCII碼
if(c==27) break;//當用戶按ESC鍵(ASCII27)時視訊結束
}
cvReleaseCapture(&capture);
cvDestroyWindow("test");
return 0;
}