C++ 视频捕获未检测到uEye摄像头

C++ 视频捕获未检测到uEye摄像头,c++,opencv,camera,ros,C++,Opencv,Camera,Ros,我的uEye相机出了点问题。使用我的笔记本电脑摄像头(id 0)或usb上的互联网摄像头(id 1),这条线路工作得非常完美:VideoCapturer.open(1);(视频捕获器属于视频捕获类OpenCV) 不幸的是,当我尝试用我的uEye相机做同样的事情时,它找不到它。我在UeyCameraManager中检查了摄像头ID,它是1。或者35,以某种专家模式。我想用和上面提到的相机一样的方法使用它 我有了驱动程序,因为UeyeComeramanager可以工作并提供一些流,而ROS节点uey

我的uEye相机出了点问题。使用我的笔记本电脑摄像头(id 0)或usb上的互联网摄像头(id 1),这条线路工作得非常完美:VideoCapturer.open(1);(视频捕获器属于视频捕获类OpenCV)

不幸的是,当我尝试用我的uEye相机做同样的事情时,它找不到它。我在UeyCameraManager中检查了摄像头ID,它是1。或者35,以某种专家模式。我想用和上面提到的相机一样的方法使用它

我有了驱动程序,因为UeyeComeramanager可以工作并提供一些流,而ROS节点ueye_cam也可以工作得很好


任何形式的建议都将不胜感激。

尽管据我所知,您可能已经解决了这一问题,但您无法将视频捕获直接用于uEye摄像头。您必须使用他们自己的SDK来访问视频流(或者根据您的情况拍摄单个快照)。之后,您可以使用memcpy()将void指针指向的内存复制到Mat对象(cv::Mat::ptr())。如果仔细观察,它实际上使用uEye SDK提供的功能来设置和访问摄像头。ROS也有自己的图像格式,这就是为什么实现(调用)一个接口来将ROS图像转换为OpenCV图像的原因。总的来说,这是一个荒谬的数据复制和转换色拉,但由于这是目前的情况,你没有太多的选择。

即使你可能已经找到了它,据我所知,你不能直接使用视频捕获与uEye相机。您必须使用他们自己的SDK来访问视频流(或者根据您的情况拍摄单个快照)。之后,您可以使用memcpy()将void指针指向的内存复制到Mat对象(cv::Mat::ptr())。如果仔细观察,它实际上使用uEye SDK提供的功能来设置和访问摄像头。ROS也有自己的图像格式,这就是为什么实现(调用)一个接口来将ROS图像转换为OpenCV图像的原因。总的来说,这是一个荒谬的数据复制和转换沙拉,但由于目前的情况就是这样,你没有太多的选择。

是的,这正是我必须做的。有趣的是,视频捕捉确实和uEye相机配合使用。。。但不是在Linux上。在Windows上,您只需执行VideoCapturer。打开(1)即可。在Linux上,你必须用指针之类的东西涂鸦。哦,很高兴知道这一点。我要在Windows上试试这个。然而,这样的事情会使您的代码在Linux机器上无法使用。当然,这只有在你想去多平台的时候才重要,不幸的是,这就是我的情况D@hubeek我确实有在windows下操作python上的uEye摄像头的问题,但它实际上不起作用。我发布了这个问题(),也许你可以帮忙。@hubeek它在Linux上不起作用的原因是ueye驱动程序没有实现标准的Linux框架v4l2,因此相机无法通过/dev/videoX获得,很遗憾。@Etienne在我辞职之前(是的,去年在生产相机的公司工作了一段时间)我确实记得v4l2登录到TODO功能列表上。何时以及是否可用是另一回事。是的,这正是我必须要做的。有趣的是,VideoCapture可以与uEye摄像头一起工作……但不能在Linux上工作。在Windows上,您只需执行VideoCapturer。打开(1)你很好。在Linux上,你必须用指针和其他东西涂鸦。哦,很高兴知道。我将在Windows上试用。但是这样的事情会使你的代码在Linux机器上无法使用。当然,只有当你想使用多平台时,这才重要,不幸的是,这就是我的情况D@hubeek我确实有手术的问题windows下python上的uEye摄像头无法正常工作。我发布了这个问题()所以也许你可以帮忙。@hubeek它在Linux上不起作用的原因是ueye驱动程序没有实现标准的Linux框架v4l2,因此很不幸,相机无法通过/dev/videoX获得。@Etienne在我辞职之前(是的,去年在生产相机的公司工作了一段时间)我确实记得TODO功能列表上的v4l2登录。何时以及是否可用是另一回事。