Firefly开源社区

打印 上一主题 下一主题

[Linux] 3399pro ubuntu下无法用opencv打开usb摄像头

13

积分

0

威望

0

贡献

技术小白

积分
13

3399pro ubuntu下无法用opencv打开usb摄像头

发表于 2020-4-14 17:23:54      浏览:8585 | 回复:4        打印      只看该作者   [复制链接] 楼主
按照官网流程装完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 显示已经是最新版本

请问如何解决?
回复

使用道具 举报

13

积分

0

威望

0

贡献

技术小白

积分
13
发表于 2020-4-14 17:32:10        只看该作者  沙发
cv2.VideoCapture(-1) 到 cv2.VideoCapture(10) 都试过了都不可以
回复

使用道具 举报

13

积分

0

威望

0

贡献

技术小白

积分
13
发表于 2020-4-15 15:26:22        只看该作者  板凳
用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!
回复

使用道具 举报

16

积分

0

威望

0

贡献

技术小白

积分
16
发表于 2021-4-9 19:51:54        只看该作者  地板
刚好我也遇到了这种问题,本质是因为这个板子在不安装任何摄像头的情况下系统里/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

点评

感谢分享  发表于 2022-4-14 13:28
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表