1. 程式人生 > >OpenCV 以MJPEG的格式 讀取攝像頭資料

OpenCV 以MJPEG的格式 讀取攝像頭資料

                    OpenCV   以MJPEG的格式  讀取攝像頭資料

 

可以使用opencv讀取。

原始碼

#include"highgui.h"
#include"cv.h"
//從攝像頭中讀入資料
int main(int argc,char** argv)
{
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
CvCapture* capture;          //初始化一個CvCapture結構的指標
if(argc==1)
{
capture=cvCaptureFromCAM(0);  //從攝像頭中讀入資料,並返回一個CvCapture的指標
}                     //注:《學習OpenCV》中此處用cvCreateCameraCapture為錯
else
{
capture=cvCreateFileCapture(argv[1]);
}
assert(capture!=NULL); //斷言(assert)使用,檢查capture是否為空指標,為假時程式退出,並列印錯誤訊息
IplImage* frame;
while(1)
{
frame=cvQueryFrame(capture);//用於將下一幀檔案載入記憶體(實際是填充和更新CvCapture結構中),返回一個對應當前幀的指標
if(!frame)
break;
cvShowImage("Example1",frame);
char c=cvWaitKey(33);
if(c==27) break; //出發ESC鍵退出迴圈,讀入資料停止
}
cvReleaseCapture(&capture);//釋放記憶體
cvDestroyWindow("Example1");
} 

 

如果是opencv2 或opencv3 ,更換一下標頭檔案

具體程式碼如下:

#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;
using namespace std;
//從攝像頭中讀入資料
int main(int argc,char** argv)
{
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
CvCapture* capture;          //初始化一個CvCapture結構的指標
if(argc==1)
{
capture=cvCaptureFromCAM(0);  //從攝像頭中讀入資料,並返回一個CvCapture的指標
}                     //注:《學習OpenCV》中此處用cvCreateCameraCapture為錯
else
{
capture=cvCreateFileCapture(argv[1]);
}
assert(capture!=NULL); //斷言(assert)使用,檢查capture是否為空指標,為假時程式退出,並列印錯誤訊息
IplImage* frame;
while(1)
{
frame=cvQueryFrame(capture);//用於將下一幀檔案載入記憶體(實際是填充和更新CvCapture結構中),返回一個對應當前幀的指標
if(!frame)
break;
cvShowImage("Example1",frame);
char c=cvWaitKey(33);
if(c==27) break; //出發ESC鍵退出迴圈,讀入資料停止
}
cvReleaseCapture(&capture);//釋放記憶體
cvDestroyWindow("Example1");
}