Opencv给我一个不清楚的相机捕获

时间:2014-03-24 06:48:44

标签: c opencv netbeans-6.9

我在netbeans 6.9 IDE中使用Opencv 2.0,我的操作系统是Windows 7 64位。当我尝试从实时源中捕获帧时,我得到的输出不清楚。

我的笔记本电脑凸轮(Acer水晶眼)效果不错。我尝试使用USB相机(罗技),但给出了相同的结果。下面是我正在使用的简单代码。

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


int main(int argc, char** argv) {    
    CvCapture *video = cvCaptureFromCAM(0);
    IplImage * img = cvQueryFrame(video);

if(!cvGrabFrame(video)){
    printf("could not grab a frame\n");
    exit(0);
}

cvNamedWindow("original_image",0);

cvShowImage("original_image",img);

cvWaitKey(0);

cvReleaseImage(&img);

cvReleaseCapture(&video);

return (EXIT_SUCCESS);

}

如果有人能帮我解决这个问题,那将是一个很大的帮助,因为我没有继续进行项目。提前致谢

1 个答案:

答案 0 :(得分:1)

您所拥有的代码仅显示流的第一帧。打开视频流后,您应该创建一个循环,从中获取流中的新帧并显示它。在你的情况下,它会变成这样:

int main(int argc, char** argv) 
{
    CvCapture *video = cvCaptureFromCAM(0);

    if(!cvGrabFrame(video)) \\check if the video can be queried for frames
    {
        printf("could not grab a frame\n");
        exit(0);
    }

    cvNamedWindow("original_image",0); \\make your output window

    while(1)
    {
        IplImage * img = cvQueryFrame(video); \\get the next frame from the stream

        cvShowImage("original_image",img); \\show the image in the output window

        if(cvWaitKey(0) == 27) \\if escape key is pressed, exit the loop
        {
            break;
        }
    }

    cvReleaseImage(&img);
    cvReleaseCapture(&video);
    return (EXIT_SUCCESS);
}