因此,在过去的几天里,我一直在尝试将我的 Kinect v1(1414) 用作 OpenCV 项目的网络摄像头(我使用的是 Ubuntu 16.04)。我已经安装了 Openkinect freenect(多次)和 OpenNI,运行时确实会得到视频输出sudo freenect-glview
。运行时lsusb
它会识别摄像头和电机。
Bus 001 Device 017: ID 045e:02ae Microsoft Corp. Xbox NUI Camera
Bus 001 Device 014: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 001 Device 016: ID 045e:02bb Microsoft Corp.
当我尝试将相机用作 python-OpenCV 项目的简单网络摄像头时,问题就出现了。因此,当我在 python 中运行时cv2.VideoCapture(0)
,控制台显示以下错误:
[ WARN:0] VIDEOIO(V4L2:/dev/video0): can't open camera by index
所以我读到使用cv2.VideoCapture(-1)
可以工作,但是随后出现以下错误:
[ WARN:0] VIDEOIO(V4L2): can't find camera device
在互联网上搜索错误后,人们说如果我找不到v4l2src
,那么就需要安装 Gstream,所以我试了 1.0 和 0.10,但都没有用。我也试过运行,ls -ltrh /dev/video*
但显示ls: cannot access '/dev/video*': No such file or directory
或运行v4l2-ctl --list-devices
显示Failed to open /dev/video0: No such file or directory
最后,我发现我需要找到一种方法让系统识别相机(dev/video0)
。但直到现在,我还没有成功,所以现在我来找你问是否有人遇到过同样的问题和/或你是否知道如何解决它。
提前致谢。
答案1
所以我终于解决了这个问题。您需要检查以下内容:
如果 -ltrh /dev/video*
显示正在运行ls: cannot access '/dev/video*
,则需要“重置” gcspa_kinect
(显然 freenect 不允许在您运行后使用它freenect-glview
。例如,“重置”按以下方式完成:
sudo modprobe -r gcspa_kinect
进而sudo modprobe gcspa_kinect
。
如果你-ltrh /dev/video*
再次运行,它会显示一个已识别的设备。现在你可以使用 Cheese 等来验证相机是否正常工作。
如果您freenect-glview
再次运行,则需要重复该过程。
如果有人知道如何永久解决系统将摄像头识别为网络摄像头并且仍然能够使用 freenect 的问题那就太好了!!