【问题标题】:Windows 10 wsl2 unbuntu 20.04 python cv2 cannot see watec 933 cameraWindows 10 wsl2 ubuntu 20.04 python cv2 看不到 watec 933 摄像头
【发布时间】: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


【解决方案1】:

我找到了答案。我不得不改变:

cap = cv2.VideoCapture(0)

到:

cap = cv2.VideoCapture('rtsp://192.168.1.250:554/h264')

我在堆栈溢出问题上找到了这个解决方案的变体。

【讨论】:

    猜你喜欢
    • 2017-01-09
    • 2020-10-25
    • 2021-01-19
    • 2022-11-11
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2021-05-10
    相关资源
    最近更新 更多