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

标签 c opencv netbeans-6.9

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

我的笔记本电脑摄像头(Acer Crystal 眼)在其他方面运行良好。我尝试使用 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);

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

最佳答案

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

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

关于c - Opencv 给了我一个不清楚的相机捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602725/

相关文章:

c++ - 函数输入变化

c++ - 如何使用 OpenCV 显示 PGM 图像

python - Numpy 数组操作太慢 np.asarray()

java - 在另一个私有(private)函数中访问私有(private)函数的变量

c - 确定字节中的哪一位被设置

c - C 中的内联实际上是如何减慢该程序的速度的?

c - 加载PE header

在 Unix 中通过引用值的类型转换调用

java - 如何使用 MS Access 使用 ComboBox 和 jTextField Netbeans 搜索 jTable 中的数据

java - 在 netbeans 中保存正在运行的实例