我正在尝试使用OpenCV从EVOCAM II Microscope from Vision Engineering捕获图像。它在手册中说,它可以通过usb3.0电缆插入计算机,然后用作普通的网络摄像头。在
因此,我使用这个非常简单的片段从相机捕捉图像:
import cv2
camera = cv2.VideoCapture(0)
ret, frame = camera.read()
if ret:
cv2.imwrite('./test.png', frame)
但是,当我应该得到1920px x 1080px
RGB图片时,我得到的是640px x 480px
带有奇怪伪影的图像:
我试着在其他软件上测试相机,比如VLC或者AMCap,但是我要么得到了一个黑色的图像,要么这个软件甚至不能开始拍摄。在
我想知道这是编码的问题还是相机如何向计算机声明自己。在
我可以通过修改OpenCV中的一些参数来解决这个问题吗?或者它有什么不同吗?在
非常感谢您抽出时间
编辑1:
在我的conda环境中opencv_version -v
的输出:
TL;DR使用的电缆是USB 2.0,用USB 3.0替代它解决了Windows上的捕获问题。
是的,我知道这听起来很愚蠢,但我得到这个奇怪的图像的原因是USB电缆是2.0而不是3.0。由于电缆已经插在摄像机上了,所以我没有费心去验证它,但是把它改成3.0版本后,它就可以在camera Windows应用程序上运行了。该公司还确认EVO Cam II使用DirectShow格式生成信号。在
然而,当比较相机保存在U盘上的图像和使用USB电缆拍摄的图像时,我发现质量并不相似。尤其是在我的例子中,用USB电缆拍摄的图像质量不够好。因此,我将不再朝这个方向努力。在
但是,对于那些希望继续我离开的地方的人,以下是Vision Engineering支持人员给我的一些链接,可以在Linux上使用OpenCV捕捉图像:
目前他们还没有一个直接的解决办法。在
不同类型的USB传输
你提到的页面并没有说这个设备可以“用USB3.0电缆插入计算机,然后作为普通的网络摄像头使用”。页面上只说它有一个USB3.0接口。你引用的页面上唯一可用的资源是小册子,它也没有说它的即插即用。在
在视觉设备和成像设备领域,usb之上的一个通用接口是"usb vision" standard。制造这种设备的厂商提供了专门的驱动程序,并且通常提供了如何与流行的库(如openCV)接口的示例代码。与即插即用相比,使用具有此标准的设备可以提高传输速率、缩短延迟时间和降低cpu利用率。通常,也提供了即插即用驱动程序,但您无法保证。如果这种即插即用驱动程序除了usb vision之外还可以使用,那么您应该改用usb vision驱动程序,因为它很可能更高级。在
事实上,小贩对这是什么司机只字不提,这让我立刻怀疑起来。我会在任何购买之前联系他们,让他们解释为什么没有提及(或者可能隐藏在他们的网页上?)在
在linux上(在评论中你说你运行的是Ubuntu18.04),这种即插即用功能是通过linux“v4l”的视频实现的。如果您想使用上面所示的设备,您需要确保供应商提供了一个适用于您的Linux版本的v4l驱动程序。在
Ubuntu版本
在撰写本文时(2018年11月19日),ubuntu18.04还没有出现足够长的时间来期待联合国通用用例的稳定性。如果此成像设备的供应商提供v4l接口驱动程序,则有合理的可能性它是不稳定的。如果可能的话,尝试使用Ubuntu16。如果你发现它可以和Ubuntu16一起工作,即使你的驱动程序应该为Ubuntu18工作,一定要通知开发者你发现了一个bug。在
相关问题 更多 >
编程相关推荐