OpenCV:从USB摄像头拍摄的黑色图像

时间:2014-02-18 09:28:30

标签: opencv camera usb

我正在尝试使用opencv从USB摄像头捕获图像帧。但是我总是得到一个黑框。我已经阅读了很多关于这个问题的帖子并尝试了所有的建议,但没有任何对我有用。

我开始使用这里讨论的代码: http://opencv-users.1802565.n2.nabble.com/Using-USB-Camera-td6786148.html

我尝试在许多“关键”句子之后加入方法cvWaitKey(1000)。如您所见,等待值非常高(1000)。

我也试图保存图像框,同样,它是一个黑色图像。

我使用以下系统:

  • OpenCV 2.2.0
  • Windows 7,32位
  • Visual Studio 2010(C ++)
  • 一块板式USB相机(我不认识制造商)

USB摄像头适用于AMCAP.EXE 1.00。

可能是因为Windows正在使用相机驱动程序吗?我可以更改为其他更适合OpenCV 2.2.0的驱动程序吗?

由于

4 个答案:

答案 0 :(得分:5)

确定。正如我在评论中答应了你的要求,抱歉让你久等了,真的很忙。几乎没有时间发布这个答案。但这是:

这是我模拟opencv捕获黑色图像。在输出窗口中,我在评论中询问了它的内容,表明存在错误。

enter image description here

经过调查,我意识到这是由于相机的可用格式: enter image description here

因为这是一个糟糕的相机。如果您有像罗技这样的更好的相机,您可以看到可用的格式更多。 enter image description here

有很多方法,你可以试试像

这样的东西
capture.set(CV_CAP_PROP_FRAME_WIDTH , 640); 
capture.set(CV_CAP_PROP_FRAME_HEIGHT , 480); 
capture.set (CV_CAP_PROP_FOURCC, CV_FOURCC('B', 'G', 'R', '3'));//diff from mine, using as example

然后网络摄像头将能够捕捉。这个网络摄像头有点故障,因此拍摄的图像不是很漂亮。enter image description here

希望这是你的问题。但也可能不是这样。我喜欢调试问题,但是我不能因为你真的很忙而放下所有可能的原因,因为你问了一个例子,这是其中之一。干杯。如果你能告诉我你输出的窗口错误是什么,我可能会提供更多帮助。

  

编辑(在评论中回答更多内容):

好的,我想让你尝试一些事情:

1)首先,我希望您尝试使用该网络摄像头来捕获视频,而不是使用cvQueryFrame或类似的捕获方法。等到可能会说10秒,看看它是否成功。原因是,一些相机(质量较差的相机)需要很长时间来预热,而它们捕获的前几帧可能是空的。

2)如果第一步不起作用,请尝试输入

cout << cv::getBuildInformation() << endl;

并粘贴媒体I / O和视频I / O的结果?我想看看结果。我也怀疑你的库依赖,但是因为你说它适用于罗技相机,我怀疑是这样的。当然,这总是有可能是因为相机与OpenCV不兼容。顺便提一下相机有没有品牌?

3)或者,只需在线搜索USB驱动程序并安装它,我有一个朋友为类似的问题做了这个,但不确定这个过程。

答案 1 :(得分:1)

首先,我建议是,访问此链接并检查您的相机是否正常工作

http://www.youronlinemirror.com/

如果是,那么请通过以下链接开始使用,你也会在那里找到一个好的opencv c ++代码,你使用的代码是opencv1 api的c代码,我宁愿鼓励你去c ++比旧版本的opencv。

http://opencv-srf.blogspot.in/2011/09/capturing-images-videos.html

如果你想要你的代码的答案,那么,它很简单,因为你说它给了一个黑屏,这发生在我的情况下,当我用opencv开始时, 它无法从设备中获取数据,因此,试试这个,它可能会起作用,就像它对我一样。

添加

cvQueryFrame( capture ); 

之前

IplImage* frame = cvQueryFrame( capture ); 

答案 2 :(得分:1)

我遇到了和你一样的问题。然后我只是将版本从3.1.0更改为2.4.13,然后我的网络摄像头正常工作!没有更多的黑色图像。我猜这个版本与vs15不兼容。认为你很久以前就已经解决了这个问题。但只是发帖让其他人知道他们是否碰巧遇到同样的问题。

答案 3 :(得分:0)

即使我在运行OpenCV相关程序时遇到了同样的黑屏问题。因此,我没有使用USB摄像头,而是使用了移动相机,它工作得很好。使用DroidCam等谷歌应用程序(在移动设备和笔记本电脑/ PC上安装DroidCam)通过Wi-Fi将移动摄像头连接到笔记本电脑。