我应该如何从 WSL2 打开 Windows 10 中的远程摄像头?

我应该如何从 WSL2 打开 Windows 10 中的远程摄像头?

我有一台 Microsoft Surface Book 2 (SB2),我可以在 Windows 10 中打开它的摄像头,但无法在 Ubuntu/WSL 中打开它。

我知道Windows VScode远程扩展可以访问WSL来打开程序并进行编辑或编译。

那么是否可以通过任何方式访问SB2的摄像头呢?

为什么?因为我有一个程序可以使用 SB2 的摄像头识别物体并计算距离。(YouTube 视频演示

但我想在WSL中完成,因为在Linux中开发通常更方便。


www说
浏览 478回答 3
3回答

呼唤远方

我希望通过 WSL2 使用网络摄像头,并在 WSL github 上发现了此问题:https://github.com/microsoft/WSL/issues/2195不幸的是,目前看来这是不可能的......希望会很快。

料青山看我应如是

自从今天这个问题被“否定”答案碰撞以来,这个答案很晚了。否定的答案也没有问题,因为我认为这种情况已经存在很长一段时间了。然而,我最近遇到了一个可能的解决方案。请注意,我自己还没有尝试过。这确实假设相机是通过 USB 连接的,即使是内部连接。我不确定 Surface Book 是否也是这种情况,但很有可能。由于大多数(全部?)PC Z-wave 接口都是通过 USB 加密狗实现的,因此关键障碍之一是如何利用 WSL 原生的 USB Z-wave 加密狗。我不会重复这些论坛的整个评论,而是总结一下(并调整“相机”的说明):使用USB/IP for Windows将 Windows 下的 USB 摄像头共享为 USB/IP 设备。uname -a检查您的 WSL2 内核版本。Microsoft 在5.10.60.1中添加了对 USB/IP 的支持。如果您没有使用最新版本,请下载它并使用 将该内核设置为 WSL2 的内核.wslconfig。在某些时候,awsl --update可能会自动将您转移到最新版本。sudo modprobe您的相机所需的任何模块。usbip list -r $HOSTNAME.local(希望)查看您的 Windows USB 设备列表及其关联的总线 ID。usbip attach -r $HOSTNAME.local -b <bus_id>与公共汽车是你的相机。完成此操作后,WSL/Linux 系统应该将您的相机视为本机 USB 设备,允许您从 Python 或任何其他语言进行访问,就像您在直接连接本机 USB 设备的本机 Linux 系统上一样。

守着星空守着你

作为解决方法,您可以通过 HTTP 将摄像头视频作为 MJPEG 数据进行流式传输,并在 WSL 中接收它:1.安装工具以在主机上流式传输网络摄像头(例如cam2web)https://github.com/cvsandbox/cam2web直接访问 Windows 版本:http://www.cvsandbox.com/projects/cam2web/v1.1.0.html2. WSL中接收流对于 WSL/WSL1:2.1 使用(例如)ffmpeg接收流在 WSL 终端中输入:&nbsp;ffmpeg -i "http://127.0.0.1:8000/camera/mjpeg" -an output.mp4对于 WSL2:2.1 查找Windows主机的IP地址不幸的是,无法使用本地主机地址,因此在 WSL2 终端中输入:cat /etc/resolv.conf作为名称服务器列出的 IP 地址是主机 IP 地址。2.2 使用(例如)ffmpeg接收流在 WSL2 终端中输入:ffmpeg -i "http://<host ip address>:8000/camera/mjpeg"-an output.mp4<host ip address>与 2.1 中的主机 IP 地址进行交换。为什么 WSL1 和 WSL2 之间存在差异?只有 WSL1 可以直接访问主机的接口。对于 WSL2,主机就像同一网络中的另一台计算机。测试:WSL1/2:免费 20.04主机:Windows家庭10.0.22000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python