我正在尝试使用Windows XP上的OpenCV 2.3.1从Claron MicronTracker cam(FireWire)捕获图像。函数cvCaptureFromCAM
不起作用。我读到OpenCV无法在Windows平台下从USB以外的数码相机获取数据 - 这是真的吗?在Windows上使用OpenCV从FireWire cam获取数据没有解决方案吗?
请帮帮我。
答案 0 :(得分:2)
您当然可以在Windows上使用OpenCV和Firewire相机。我已经与几个不同的Firewire相机供应商(Point Grey,Imaging Source等)完成了这项工作。不幸的是,您将无法使用OpenCV VideoCapture
类来执行此操作。
您的选择是使用CMU1394驱动程序(假设您的上述摄像头与之兼容)或供应商的摄像头驱动程序来捕获帧以及这些数据缓冲在cv::Mat
中的位置。如果您需要对相机参数进行特定控制,最好的办法是使用供应商的驱动程序。这将为您提供最大程度的控制,但会将您与相机紧密联系在一起。你可以子类VideoCapture
,并在同一个接口下实现供应商的驱动程序,以减轻这种耦合。
Here是使用CMU驱动程序执行此操作的简短示例。
编辑:我发现,自2010年5月以来,OpenCV已经内置了对CMU兼容相机的支持。实现此功能的类是here。我不相信这是默认编译到库中的。因此,您将不得不自己从源代码构建OpenCV。您需要取消注释行//#define HAVE_CMU1394 1
才能使其生效。希望有帮助!