问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VM虚拟机无法调用摄像头的解决方案

创作时间:
作者:
@小白创作中心

VM虚拟机无法调用摄像头的解决方案

引用
CSDN
1.
https://blog.csdn.net/weixin_42899627/article/details/141425155

本文主要解决在VM虚拟机中无法调用摄像头的问题,包括opencv调用摄像头失败和USB设备连接失败两种情况。通过扫描检测硬件改动和重新加载USB控制器等步骤,可以有效解决这一常见问题。

前言

网上找的很多方法都是无效的,只有一篇文章是对我有效的,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"的连接失败】

连接摄像头方法

  1. 【虚拟机】>【可移动设备】>【电脑摄像头型号】>【连接(断开与主机的连接)(C)】
  2. 点击右下角【摄像头图标】也可以进行摄像头连接

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 #列出特定设备支持的视频格式。
    
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号