【问题标题】:Open cv gives a blank window with my USB cameraOpencv 给我的 USB 摄像头一个空白窗口
【发布时间】:2014-05-06 04:19:48
【问题描述】:

到目前为止,我一直在使用我的 acer 水晶眼相机。它为我提供了我需要的准确输出,但是当我开始使用我的罗技相机时,它只给了我一个黑色窗口。

我的 Logitech 相机没有问题,我用它来进行 skyping,甚至我也尝试过在线镜子。

谁能帮帮我。这个问题有很多解决方案,但没有任何帮助。

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

  int main(int argc, char** argv) {

  CvCapture *video = cvCaptureFromCAM(1);

     IplImage * img = NULL

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

     cvNamedWindow("original_image",0);

     while(1){
        img = cvQueryFrame(video);
        cvShowImage("original_image",img);
        if (cvWaitKey(0)==27){
        break;
        }

     cvReleaseImage(&img);

     cvReleaseCapture(&video);

     return (EXIT_SUCCESS);
     }

【问题讨论】:

  • 尽可能;不要使用openCV的c接口。帮我们大家一个忙,切换到 c++ 版本!
  • 我会记住这一点。这种情况下,我是专门驱使我使用 C 的。

标签: opencv


【解决方案1】:

尝试使用 if (cvWaitKey(30)==27) 工作而不是 if (cvWaitKey(0)==27)

highgui 需要一些时间来更新框架。

【讨论】:

  • 但是我的代码可以用我的 Acer 水晶眼相机给我结果。
【解决方案2】:

您确定您的 USB 摄像头的索引为 1?

CvCapture *video = cvCaptureFromCAM(1);

您可以尝试在设备管理器中禁用您的 acer 网络摄像头(如果您使用的是 Windows),然后将上面的行替换为:

CvCapture *video = cvCaptureFromCAM(CV_CAP_ANY);

这样,您可以确保您只启用了 1 个摄像头(USB 摄像头),并且通过使用 CV_CAP_ANY,您可以确保使用了一个摄像头。如果这仍然给您一个黑屏/空白屏幕,您就知道还有其他问题。

【讨论】:

  • 您使用的是什么版本的 OpenCV?您是否安装了 USB cam 的驱动程序?在某些情况下,Windows 可以识别网络摄像头(即使没有正确的驱动程序),但在 OpenCV 中不起作用
  • 如果你尝试使用 1 的索引(并且没有那个编号的相机)opencv 应该会报错,而不仅仅是一个空白屏幕。
  • 好的,所以这不是问题的开始;)您增加等待时间的建议确实可以解决问题。
  • 版本为 2.0。我知道它不是最新版本,但我无法配置任何其他版本。驱动程序是自动安装的。没有错误只是黑屏
  • 大多数网络摄像头应该可以工作,因为它们支持标准 USB 驱动程序。有些相机在 linux 上出现问题,但我没有看到“标准”罗技相机因驱动程序而在 opencv 上失败。
猜你喜欢
  • 2022-01-07
  • 2011-12-21
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
相关资源
最近更新 更多