Visual c++ 错误:window7中opencv中的捕获为空

Visual c++ 错误:window7中opencv中的捕获为空,visual-c++,opencv,webcam,c-api,Visual C++,Opencv,Webcam,C Api,我在这里看到过其他类似于这个问题的帖子,甚至目瞪口呆,试图尝试各种可能的方法,但它们都不适合我。 下面的代码只是从网络摄像头无限地捕获图像,代码正在成功构建 获取错误“错误:捕获为空” Windows7是否支持opencv2.2.0,我在很多帖子中都提到在Windows7中使用DirectShow进行视频捕获 #include<opencv/cxcore.h> #include<opencv/highgui.h> #include<opencv/cxcore.h&g

我在这里看到过其他类似于这个问题的帖子,甚至目瞪口呆,试图尝试各种可能的方法,但它们都不适合我。 下面的代码只是从网络摄像头无限地捕获图像,代码正在成功构建 获取错误“错误:捕获为空”

Windows7是否支持opencv2.2.0,我在很多帖子中都提到在Windows7中使用DirectShow进行视频捕获

#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);

    }
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
CvSize size640x480=CvSize(640480);
CvCapture*p_Cap网络摄像头;
IplImage*p_imgOriginal;
p_capWebcam=cvCaptureFromCAM(0);//我试过p_capWebcam=cvCaptureFromCAM(CV_CAP_ANY)
//我尝试了从-1到10的索引,但没有任何效果
如果(p_capWebcam==NULL)
{
printf(“错误:捕获为空”);
getchar();
返回-1;
}
cvNamedWindow(“原始”,CV_窗口_自动调整大小);
而(1)
{
p_imgOriginal=cvQueryFrame(p_capWebcam);
if(p_imgOriginal=NULL)
{
printf(“错误:帧为空\n”);
打破
}
cvWaitKey(10);
cvShowImage(“原件”,p_imgOriginal);
}
}

IDE是微软Visual C++ 2010 Express,

Webcamera(Frontech)usb2.0支持以下格式
{'YUY2_160x120''YUY2_176x144''YUY2_320x240''YUY2_352x288''YUY2_640x480'}

您缺少对cvWaitKey(10)的调用在cvShowImage()之后(因此您的窗口不会得到更新)


和请移到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;
}

图像窗口现在正在响应,但背景仍然为灰色,未捕获图像