【发布时间】:2012-10-15 15:35:30
【问题描述】:
我正在尝试使用 OpenCV 从 USB 摄像头捕获视频。
#include <highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
VideoCapture cap (-1);
if (!cap.isOpened())
cout << "Cam initialize failed";
else cout << "Cam initialized";
return 0;
}
无法初始化相机。 cap.isOpened() 返回零。
相同的程序,具有相同版本的 OpenCV 和相同的 USB 摄像头,在我朋友的机器上正确运行。我正在运行Fedora 16。相机在另一个应用程序中正常工作(例如,Cheese)。
我在 Google 和 Stack Overflow 中进行了一些搜索。但没有有用的帮助。 有什么想法吗?
【问题讨论】:
-
您的相机可以在其他应用程序中使用吗?
-
@vfcosta 正如我之前提到的,相机在其他应用程序中运行良好。我在 Cheese、Kamoso 和 vlc 中使用过它。
-
@james 来自您提供的链接,它似乎在 highgui 中存在问题。但是那里给出的解决方案或解决方案提示是针对 Windows 的。我正在运行 linux fedora 16。我不知道在哪里可以找到要包含的适当预处理器。
-
@brainbarshan,我不确定如何在 linux 中包含预处理器定义,但您可以简单地将 #define HAVE_VIDEOINPUT #define HAVE_DSHOW 添加到适当的全局头文件中(尝试修改现有的 opencv 头文件)和尝试重新编译 highgui 库。顺便说一句,您使用的是最新的 OpenCV 吗?