3399pro ubuntu下无法用opencv打开usb摄像头
按照官网流程装完rknn toolkit和RockX 组件包,使用RockX 的 python 样例里opencv-python的接口cv2.VideoCapture(0)调用usb摄像头报错
Unable to stop the stream: Invalid argument
自己写简单的opencv 程序可以读取图像和视频,同样无法打开摄像头
lsusb可以识别摄像头
安装cheese可以正常打开usb摄像头
apt-get install python3-opencv 显示已经是最新版本
请问如何解决? cv2.VideoCapture(-1) 到 cv2.VideoCapture(10) 都试过了都不可以 用cheese可以打开usb摄像头,但是用opencv cap = cv2.VideoCapture(0)就会报错 Unable to stop the stream:Invalid argument. 用cv2.VideoCapture("../test.avi")可以打开本地视频。 lsusb可以识别摄像头 不插摄像头时ls /dev/video* 会显示从/dev/video0 到/dev/video9 插上会多出来/dev/video10 和/dev/video11 在cv2.VideoCapture()中index 写10 或者11 又会报错 VIDEOOD ERROR: V4L: index 11 is not correct! 刚好我也遇到了这种问题,本质是因为这个板子在不安装任何摄像头的情况下系统里/dev里面就有至少8个video,而opencv默认支持8个也就是支持/dev/video0到video7,这个时候你插usb摄像头会被系统识别为大于7的video x然后cv2.VideoCapture(x)就会报错为index x is not correct!而 cv2.VideoCapture(x)0<=x<=7又会报错 Unable to stop the stream:Invalid argument,因为0-7是无中生有的摄像头。
有两种解决方法:
一, 修改源码再编译安装,opencv源码的./modules/videoio/src/cap_v4l.cpp文件中,明确定义了opencv默认只支持最多8个摄像头的读取
把该cpp文件里面定义的MAX_CAMERAS的8改为12或者更多后再编译安装
不想费事可以用第二种方法:
二,使用udev规则,把外接的usb摄像头映射到video0和1上
具体参见:https://blog.csdn.net/limuyuanrs/article/details/108088644
页:
[1]