【发布时间】:2022-07-10 02:16:23
【问题描述】:
我正在尝试使用 cv2 将视频源运行到 tkinter 画布小部件中。我使用的是 Windows 10,版本 21H2,操作系统版本 19044.1348。(由于我工作的地方,我不允许升级。)我正在使用 wsl2 并运行 Ubuntu 20.04。我使用的是 Watec 933 摄像机。作为诊断,我可以使用 VLC 的视频流功能查看视频。
当我查看 /dev 时,我根本看不到任何视频挂载。
当我运行我的 python 代码时,这只是以下一组命令:
import cv2
import time
cap = cv2.VideoCapture(0)
time.sleep(2)
(ref, frame) = cap.read()
我收到以下错误:
global /io/opencv/modules/videoio/src/cap_v4l.cpp (889) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
我的问题是:有人知道如何诊断这个错误吗?
显然 ubuntu 没有显示任何设备,但同时我可以使用 VLC 观看视频。我对 windows 和 ubuntu 之间的相互作用感到困惑。
有人有这方面的经验吗?我在网上查过,但无济于事。
【问题讨论】:
-
VM 中是否安装了 VLC?还是您运行主机的 VLC?
-
VLC 已安装在主机上。仍然不确定 Windows 10 如何与 Ubuntu 交互。
-
如果 VLC 安装在主机操作系统中,它将在主机上下文中运行。它甚至不知道有 linux。使用这个 VLC 证明什么。 -- 您是否研究过是否可以从 WSL2 内部访问网络摄像头?
-
我没有尝试确定是否可以在 Ubuntu 上运行 VLC。实际上,我对 VLC 并不是很感兴趣,而是对 tkinter 感兴趣。 Windows 10 和 WSL-2 之间相互作用的整个问题对我来说很好理解,但现在我已经能够让 cv2 看到我的摄像机,这就是我正在寻求帮助的原因。如果您知道任何有关 Windows 和 WSL-2 如何协同工作的书籍或说明,我将不胜感激。例如,我很难让 Ubuntu 正确显示。我希望我可以使用 WSL-2 毫无问题地访问我的 linux 工作。
-
如果不需要使用wsl/wsl2/任何虚拟化,那么不要使用它。它增加了复杂性。
标签: python-3.x windows opencv tkinter wsl-2