lee-romantic 's Blog
Everything is OK!
Toggle navigation
lee-romantic 's Blog
主页
About Me
归档
标签
Ubuntu打开usb摄像头出现的问题
2021-03-29 12:08:14
892
0
0
lee-romantic
# 检查是否有摄像头usb设备 使用opencv中的videocapture读取usb摄像头,打开失败,提示索引号不对。打不开usb摄像头时,通常出现的问题是下面这样的错误: ``` [ WARN:0] global /tmp/pip-req-build-qacpj5ci/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video0): can't open camera by index ``` 此时可以[参考](https://blog.csdn.net/qq_39619964/article/details/105807014),使用如下命令查看摄像头(也可以直接`ls /dev/video*`查看。): ``` v4l2-ctl --list-devices ``` ``` USB2.0 Camera: USB2.0 Camera (usb-0000:00:14.0-9.4): /dev/video0 /dev/video1 ``` 然后[参考](https://github.com/opencv/opencv/issues/19356),既然不能使用索引打开,那么直接输入尝试看能否打开(没有权限则使用sudo): ``` import cv2 cap = cv2.VideoCapture('/dev/video0') ret, frame = cap.read() print(ret, frame) # 输出False None则说明还是不行 ``` # 检测是否因为无权限 [参考](https://blog.csdn.net/m0_37596112/article/details/86552087),可能是没有加sudo。基本都是这种情况造成的,特别普遍。 不过加了sudo可能出现ImportError,因为sudo它不是按照通常PATH看到的是一个可执行文件时的顺序,具体[参考](https://www.pythonheidong.com/blog/article/710071/50ef367f946a4b36094c/)。因此,手动指定python版本,如下即可: ``` sudo /home/bobo/anaconda3/envs/pytorch1.4/bin/python manage.py runserver 0.0.0.0:8009 ``` # 检查是否因为端口占用 1、端口占用,导致摄像头也被占用。有时候使用ctrl+z结束程序就会造成这样的情况。因为尽管`ctrl+c`和`ctrl+z`都是中断命令,但是他们的作用却不一样。ctrl+c是强制中断程序的执行,会释放资源。ctrl+z是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作。 2、可以使用`netstat`相关命令进行检查,可[参考](https://blog.csdn.net/qq_38260497/article/details/88316449)。 ``` -a 显示所有项,我一般用netstat必跟-a -n 将能显示成数字的显示成数字,比如 Local Address,若不使用-n,有可能显示的是你的机器名;但使用-n,则显示的是127.0.0.1 -t 显示所有tcp的 -u 显示所有udp的 -p 显示程序名以及pid ``` ``` netstat -ap # 显示所有tcp连接及其pid,找到pid后直接kill掉 ``` 3、还可以配合[`lsof`命令](https://blog.csdn.net/zhengshengnan123/article/details/99084939)查找对应端口号的进程,lsof是一个列出当前系统打开文件的工具,linux下一切皆为文件。 ``` lsof -i:8009 # 找到端口号为8009的程序,找到后使用kill命令杀掉 ``` 4、找到相关进程后,还可以通过pwdx找到工作目录 ``` pwdx 6234 #找到pid为6234的程序的工作目录 ```
上一篇:
Windows+CLion+OpenCV环境
下一篇:
互联网概率智力面试题整理
0
赞
892 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册