OpenCV 以MJPEG的格式 讀取攝像頭資料
阿新 • • 發佈:2018-12-24
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"); }