2013-12-22 19 views
-1

我已經看到類似於這個問題的其他職位,甚至goggled和嘗試嘗試所有可能的方法說,但他們都沒有爲我工作。 以下代碼只是爲了從網絡攝像機無限捕捉圖像,並且代碼正在成功建立 獲取錯誤「error:capture is NULL」。錯誤:捕獲在窗口opencv NULL爲NULL

是否opencv2.2.0支持的Windows 7,我在它被提及使用直接秀視頻採集窗口7

#include<opencv/cxcore.h> 
#include<opencv/highgui.h> 
#include<opencv/cxcore.h> 

#include<stdio.h> 
#include<stdlib.h> 

int main(int argc,char* argv[]) 
{ 
    CvSize size640x480 = cvSize(640,480); 
    CvCapture* p_capWebcam; 
    IplImage* p_imgOriginal; 

    p_capWebcam=cvCaptureFromCAM(0);//i tried p_capWebcam=cvCaptureFromCAM(CV_CAP_ANY) 
            //i tried index from -1 to 10 but nothing worked 
    if(p_capWebcam==NULL) 
{ 
    printf("error:capture is NULL"); 
    getchar(); 
    return -1; 
} 


    cvNamedWindow("Original",CV_WINDOW_AUTOSIZE); 
    while(1) 
    { 
    p_imgOriginal=cvQueryFrame(p_capWebcam); 
    if(p_imgOriginal=NULL) 
    { 
     printf("error :frame is NULL \n"); 
     break; 
    } 
    cvWaitKey(10); 
    cvShowImage("Original",p_imgOriginal); 

    } 
} 

IDE很多帖子所看到的是微軟的Visual C++ 2010速成,

網絡攝像頭(先端)USB2.0支持以下格式 {'YUY2_160x120'YUY2_176x144'YUY2_320x240'YUY2_352x288 'YUY2_640x480'}你缺乏

回答

0

cvWaitKey(10);一個呼叫cvShowIm後年齡()(因此你的窗口不會更新)。


並且請移動到C++ api,過時的c-api將不會被支持很長時間。

所以,整個事情應該看起來更像是這樣的:

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/core/core.hpp" 

using namespace cv; 

int main() 
{ 
    VideoCapture cap(0); 
    while(cap.isOpened()) 
    { 
     Mat frame; 
     if (! cap.read(frame)) 
      break; 
     imshow("lalala",frame); 
     int k = waitKey(10); 
     if (k==27) 
      break; 
    } 
    return 0; 
} 
+0

圖像窗口現在響應,但後臺仍是灰色圖像不會捕獲 – shubham1994