【问题标题】:OpenCV2.2 cvCaptureFromCAM problems...only returning a green screen. (Logitech C260 camera)OpenCV2.2 cvCaptureFromCAM 问题...只返回绿屏。 (罗技 C260 相机)
【发布时间】:2011-03-03 06:23:59
【问题描述】:

我正在编写一个需要使用 opencv 从网络摄像头捕获的程序。我正在使用罗技 C260 相机和 OpenCV2.2、Windows XP、QT Creator。这是我的代码示例:

int i = 0;

int arg = 0;
CvCapture *pCapturedImage = cvCaptureFromCAM(arg);

cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
IplImage* img1= cvQueryFrame(pCapturedImage);
IplImage* img2;
IplImage* merged;
int MAX_FRAMES = 10;
    for (int i = 0; i < MAX_FRAMES; i++){
    pCapturedImage = cvCaptureFromCAM(arg);
    if (!pCapturedImage){
        printf("Uh oh");
    }
    img1 = cvQueryFrame(pCapturedImage);

    printf("Query");
    cvShowImage( "Example1", img1 );
    cvWaitKey(0);
}
for (int i = 0; i < MAX_FRAMES; i++){
    printf("Enter");
    img2 = img1;
    pCapturedImage = cvCaptureFromCAM(arg);
    if (!pCapturedImage){
        printf("Uh oh");
    }else
    printf("Capture");
    img1 = cvQueryFrame(pCapturedImage);
    printf("Query");
    cvShowImage( "Example1", img1 );
    cvWaitKey(0);
    img1 = mergePhotos(img2, img1, i*25, i*25);
    printf("Merge");
    cvShowImage( "Example1", img1 );
    cvWaitKey(0);

}

但它不起作用。在前 10 次捕获中,我只获得了一个,然后,捕获变为空(我会发布一张图片,但我不允许这样做)。

我被难住了。我试过 cvCaptureFromCAM 和 cvCreateCameraCapture。我已经尝试将 args 更改为该函数。我已经尝试了所有的 USB 端口。

有人知道问题可能是什么吗?我非常感谢所有帮助。

【问题讨论】:

    标签: c++ qt windows-xp opencv webcam


    【解决方案1】:

    您只需要在循环之外调用一次 cvCaptureFromCAM(或 cvCreateCameraCapture)来初始化和打开相机。然后你可以通过每次调用 cvQueryFrame 来获取新的帧。 (将 cvCapture 视为帧源,而不是帧本身。)

    可能有一些操作系统限制,您不能多次打开相机资源......这可能是您描述的“仅 10 帧”的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2011-05-17
      • 2017-03-11
      相关资源
      最近更新 更多