我的uEye相机问题很严重。在usb(id 1)上使用我的笔记本电脑摄像头(id 0)或网络摄像头,这条线路完美运行:TheVideoCapturer.open(1); (TheVideoCapturer属于VideoCapture类,OpenCV)。
不幸的是,当我尝试用我的uEye相机做同样的事情时,它无法找到它。我在ueyecameramanager中查看了摄像机ID,在某些专家模式下它是1.或者35。我想像上面提到的相机一样使用它。
我有驱动程序,因为,好的,ueyecameramanager工作并给我一些流,ROS节点ueye_cam也可以正常工作。
任何形式的建议都会很高兴。
答案 0 :(得分:2)
尽管你已经知道了,但据我所知你不能直接用uEye相机使用VideoCapture。您必须使用自己的SDK来访问视频流(或根据您的情况拍摄单个快照)。之后,您可以使用memcpy()将由 is:GetImageMem(...)填充的 void 指针指向的内存复制到Mat对象(cv ::垫:: PTR())。如果你看得足够近ROS node for uEye,它实际上使用了uEye SDK提供的功能来设置和访问摄像头。 ROS也有自己的图像格式,这就是为什么要实现一个接口(称为cv_bridge)将ROS图像转换为OpenCV图像的原因。总的来说,它是数据复制和转换的荒谬沙拉,但由于这就是目前的情况,你在那里没有多少选择。