应用场景:
尝试在Linux虚拟机环境中使用OpenPose,这是一个开源的实时多人系统,用于身体、面部和手部关键点检测。为了实现OpenPose的实时拍摄视频功能,需要将电脑摄像头连接到虚拟机中的Linux系统上,以便捕捉并处理实时的视频流。
问题描述
- 进入openpose目录
cd openpose
openpose目录下的build文件夹通常是在进行编译和构建openpose项目时创建的
./build/examples/openpose/openpose.bin --render_pose 0 --face --face_render 1 --hand --hand_render 1 --camera 1
由于没有将电脑的外置摄像头连接到虚拟机中的Linux系统上,会出现类似下面的错误
Error:
VideoCapture (webcam) could not be opened.
原因分析:
摄像头连接问题:由于虚拟机是运行在宿主机上的一个隔离环境,默认情况下,虚拟机无法直接访问宿主机的硬件设备,包括摄像头。因此,需要将摄像头从宿主机传递到虚拟机中,这通常涉及到虚拟机的USB设备传递设置。
设备兼容性和性能:即使成功地将摄像头传递到虚拟机中,也可能会遇到兼容性问题,比如Linux驱动不支持摄像头或者性能不佳。这可能会影响视频的流畅度和质量,从而影响OpenPose的实时性能。
解决方案:
- 首先,进入虚拟机的设置。
在VMware Workstation中,点击菜单栏上的“虚拟机”选项,然后选择“设置”或直接右键点击虚拟机并选择“设置”。
在弹出的设置窗口中,找到左侧的“USB控制器”选项并点击它。
确保USB控制器已经添加并且被勾选启用。如果没有添加,你可以点击“添加”按钮,从列表中选择“USB控制器”并添加它。
注意检查是否勾选了“显示所有USB输入设备”的选项,这有助于确保虚拟机能够识别连接到主机的USB设备。
- 手动连接USB设备:
如果USB控制器设置正确但仍然没有解决问题,可以尝试手动连接USB设备。
需要先关闭打开的特定虚拟机,以VMware workstation 17为例:
在VMware Workstation中,点击虚拟机选项,选择“可移动设备”选项。
在显示的列表中,可以看到USB选项,可以更改连接或断开的状态
- 检查VMware USB Arbitration Service服务:
VMware USB Arbitration Service是确保USB设备能够在虚拟机和主机之间正常传输数据的服务。确保这个服务已经启动并且正在运行。
在主机上,你可以通过按下Windows键+R,输入“services.msc”来打开服务管理器, 然后找到“VMware USB Arbitration Service”服务并确保它已启动。
与虚拟机连接成功后,在Linux桌面右下角可以看见USB图表,可以方便地更改断开或连接的状态。
- 重新安装或更新VMware Tools:
VMware Tools包含了虚拟机所需的驱动程序和实用程序,其中包括USB设备的支持。确保你已经安装了最新版本的VMware Tools。
如果没有安装或者需要更新,你可以在虚拟机的设置中找到“CD/DVD(SATA)”选项,并将VMware Tools的安装镜像挂载到虚拟机中,然后按照提示进行安装或更新。
- 还有一种可能是,
vmx文件配置问题
:虚拟机的vmx文件(配置文件)中,关于USB设备的默认访问权限可能被设置为禁止(usb.restrictions.defaultAllow = “FALSE”)。
首先,确保你的虚拟机已经完全关闭
,因为vmx文件在虚拟机运行时可能会被锁定,导致无法修改。
接下来,按照以下步骤操作:
找到虚拟机的配置目录:
虚拟机的配置目录通常位于你创建虚拟机时指定的位置。如果你没有更改过默认设置,那么它可能位于你的用户目录下的某个VMware相关的文件夹中,比如C:\Users\你的用户名\Documents\Virtual Machines\虚拟机名称\(Windows系统)或~/Documents/Virtual Machines/虚拟机名称/(Linux或Mac系统)。
找到vmx文件:
在虚拟机的配置目录中,你会看到一个或多个以.vmx为扩展名的文件。这些就是虚拟机的配置文件。通常,主配置文件会以虚拟机的名称命名,比如虚拟机名称.vmx
。
使用文本编辑器打开vmx文件:
右键点击vmx文件,选择“打开方式”,然后选择一个文本编辑器,比如记事本(Notepad)或你喜欢的其他文本编辑器。
查找并修改usb.restrictions.defaultAllow这一行:
在打开的文本编辑器中,使用“Ctrl + F”或类似的快捷键来查找usb.restrictions.defaultAllow这一行。
找到这一行后,将其值从FALSE改为TRUE
。确保在修改时不要更改其他部分的配置。
保存并关闭文件:
在文本编辑器中完成修改后,点击保存按钮来保存文件。然后关闭文本编辑器。
重启虚拟机:
现在你可以重新打开VMware Workstation或Fusion,并启动你的虚拟机了。USB设备应该能够正常识别并在虚拟机中使用了。
有时,(VM17)中安装VMware Tools后,并没有直接解压或执行脚本,但能在虚拟机中成功使用摄像头,解释如下:
- VMware Tools的作用:
VMware Tools是VMware提供的一套工具集,用于增强虚拟机与宿主机之间的交互。安装VMware Tools后,你可以获得许多增强的功能,如更好的图形性能、拖放文件、共享剪贴板等。
对于摄像头等USB设备的支持,VMware Tools也提供了必要的驱动和组件。
- 摄像头在虚拟机中的使用:
在虚拟机选项的可移动设备里连接了摄像头,并在虚拟机中成功使用。这通常是因为VMware Workstation已经通过VMware Tools为摄像头提供了必要的驱动支持。
在某些情况下,即使你没有显式地执行VMware Tools的解压或安装脚本,VMware Workstation也会在虚拟机启动时自动挂载VMware Tools的光盘映像,并提示你安装。但如果你之前已经安装过,或者VMware Workstation已经预置了必要的驱动,那么你可能不会再次看到安装提示。不需要担心没有解压或执行脚本的问题,只要确保VMware Tools已经正确安装并启用即可。
VMware Tools解压并执行相应脚本的主要作用
为虚拟机提供额外的功能和优化,使其与宿主机之间的交互更加顺畅。以下是关于其作用以及未解压执行脚本的影响的详细解释:
- VMware Tools解压并执行脚本的作用:
1、提供硬件加速支持:通过安装VMware Tools,虚拟机可以获得更好的图形和音频性能,加速网络传输,提高磁盘I/O性能等。
2、同步虚拟机与宿主机时间:确保虚拟机与宿主机之间的时间同步,避免时间差异导致的问题。
3、改进文件共享:VMware Tools提供了拖放功能,允许在宿主机和虚拟机之间轻松复制和粘贴文件。
4、支持USB设备:通过安装VMware Tools,虚拟机可以支持USB设备,如摄像头、打印机等。
5、其他优化和增强功能:根据虚拟机的操作系统,VMware Tools可能还包含其他优化和增强功能。
- 如果只安装VMware Tools,没有解压执行脚本的影响:
1、功能缺失:没有解压执行脚本,虚拟机可能无法获得VMware Tools提供的所有功能和优化。这包括硬件加速支持、时间同步、文件共享和USB设备支持等。
2、性能受限:由于缺少必要的驱动和组件,虚拟机的性能可能会受到影响,如图形和音频性能下降、网络传输和磁盘I/O性能降低等。
3、交互不便:没有安装完整的VMware Tools,宿主机和虚拟机之间的交互可能会变得不便,如无法拖放文件、无法支持USB设备等。
- 安装过程中的配置:
在安装VMware Tools的过程中,会进行一系列的配置和安装操作,包括:
1、解压VMware Tools安装程序:将VMware Tools的压缩包解压到虚拟机的文件系统中。
2、执行安装脚本:根据虚拟机的操作系统和配置,执行相应的安装脚本,安装必要的驱动和组件。
3、配置相关设置:安装过程中可能会提示用户配置一些相关设置,如时间同步设置、文件共享设置等。
总之,为了确保虚拟机能够获得VMware Tools提供的所有功能和优化,建议按照安装向导的指示解压并执行相应的脚本。如果只安装了VMware Tools但没有解压执行脚本,虚拟机可能无法获得完整的功能和优化,性能也可能会受到影响。