--
- 前言
- 1 报错说明
- 1.1 opencv调用摄像头失败,画面窗口无法显示
- 1.2 选择连接摄像头出现失败:桌面右下角出现【USB 设备“Acer Integrated RGB Camera"的连接失败】
- 连接摄像头方法
- 2 解决方法
- 步骤一
- 步骤二
- 步骤三
- 补充
前言
网上找的很多方法都是无效的,只有一篇文章是对我有效的,CSDN的文章:ubuntu18虚拟机连接usb摄像头连接失败,驱动错误解决办法,非常感谢这个博主。
主要解决方法:打开设备管理器,在vm连接摄像头的时候,对【通用串行总线控制器】进行【扫描检测硬件改动(A)】,即可发现多了一个【VMware USB Device】且保持不变,即可以解决报错。
1 报错说明
1.1 opencv调用摄像头失败,画面窗口无法显示
终端输出显示
xucg@xucg-vm17:~/dev_ws$ ros2 run learning_node node_object_webcam
[INFO] [1724301196.539635769] [node_object_webcam]: ROS2节点示例:检测图像中的苹果
[ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (2075) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Cannot identify device '/dev/video0'.
[ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (1053) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0] global ./modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
1.2 选择连接摄像头出现失败:桌面右下角出现【USB 设备“Acer Integrated RGB Camera"的连接失败】
连接摄像头方法
- 【虚拟机】>【可移动设备】>【电脑摄像头型号】>【连接(断开与主机的连接)(C)】
- 点击右下角【摄像头图标】也可以进行摄像头连接
2 解决方法
步骤一
上方菜单【虚拟机】>【管理】>【USB控制器】>【USB兼容性】>【确认】
这时会虚拟机会卡一下,进行重新加载,等待加载完成即可
步骤二
参考上面的【连接摄像头的方法】,连接过程大概需要10几秒,同时打开【设备管理器】,找到【通用串行总线控制器】,右键选择【扫描检测硬件改动(A)】,等扫描结束,可发现多了一个【VMware USB Device】且保持不变,且桌面右下角的【摄像头图标】保持高亮,即是摄像头可以正常使用。
步骤三
安装chese软件进行摄像头查看
sudo apt-get install cheese
cheese
补充
这些命令主要是用于查看关于摄像头设备的信息和操作。它们的功能如下:
列出所有符合 /dev/video* 模式的视频设备文件,这些文件通常代表着系统中的摄像头设备。
ls /dev/video*
列出PCI设备信息,并使用grep命令过滤出包含"camera"关键词的行,以显示与摄像头相关的PCI设备信息。
lspci | grep -i camera
列出USB设备信息,并使用grep命令过滤出包含"camera"关键词的行,以显示与摄像头相关的USB设备信息。
lsusb | grep -i camera
列出所有/dev/video*模式的视频设备文件,并按照时间顺序从旧到新进行排序,以及以易读的格式展示文件大小。
ls -ltrh /dev/video*
显示当前正在使用 /dev/video0 设备(摄像头0)的进程信息。
sudo lsof /dev/video0
使用 v4l2-ctl 命令来显示 /dev/video0 设备(摄像头0)的所有控制项和设置。
sudo apt install v4l-utils
v4l2-ctl -d /dev/video0 --all
# 查看摄像头信息
v4l2-ctl --list-devices #列出系统上可用的视频设备。
v4l2-ctl -d /dev/video0 --list-formats-ext #列出特定设备支持的视频格式。