vm 虚拟机无法调用摄像头(亲测有效)

前言

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

在这里插入图片描述

  1. 点击右下角【摄像头图标】也可以进行摄像头连接

在这里插入图片描述

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 #列出特定设备支持的视频格式。

猜你喜欢

转载自blog.csdn.net/weixin_42899627/article/details/141425155