You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:WSL无法访问摄像头,Win10下Ubuntu Shell运行Python代码遇问题

WSL 2访问Windows摄像头的最新方案

嘿,好消息!现在WSL 2已经完全支持访问Windows的摄像头了,不管是笔记本集成的还是USB外接的都有可行的办法,不用再像一两年前那样卡壳啦~下面分两种场景给你详细说:

一、访问笔记本集成摄像头(Win10 21H2+ / Win11)

  1. 确认WSL版本:先确保你用的是WSL 2,在Windows的PowerShell或命令行里敲:

    wsl --list --verbose
    

    看到你的Ubuntu发行版对应的VERSION是2就行;如果是1,用这条命令转换:

    wsl --set-version Ubuntu 2
    

    (把Ubuntu换成你实际用的发行版名字)

  2. 安装WSL端依赖:打开Ubuntu Shell,更新包并安装摄像头检测工具:

    sudo apt update && sudo apt install v4l-utils
    
  3. 验证摄像头识别:执行这条命令查看WSL是否识别到Windows的摄像头:

    v4l2-ctl --list-devices
    

    如果能看到类似Integrated Camera的设备,并且对应/dev/video0这样的路径,就说明成功了。

  4. Python代码调用注意事项

    • 用OpenCV的话,直接用cv2.VideoCapture(0)即可(如果有多个设备,尝试12等编号)。
    • 如果遇到权限报错,给设备文件加读写权限:
      sudo chmod 666 /dev/video0
      
    • 确保你的OpenCV是最新版本,更新一下:
      pip install --upgrade opencv-python
      

二、访问USB外接摄像头

如果是外接USB摄像头,或者集成摄像头识别有问题,可以用USB直通工具:

  1. 在Windows上安装usbipd-win:这个工具能把Windows的USB设备直通到WSL里,直接在Windows上安装即可。

  2. 绑定并附加USB摄像头到WSL

    • 打开管理员权限的PowerShell,列出所有USB设备:
      usbipd wsl list
      
    • 找到你的摄像头对应的总线ID(比如1-2),执行命令附加到WSL:
      usbipd wsl attach --busid 1-2
      
  3. 回到WSL验证:同样用v4l2-ctl --list-devices确认设备,之后的Python调用步骤和上面一致。

常见问题排查

  • 如果识别不到设备,试试重启WSL:在PowerShell里敲wsl --shutdown,再重新打开Ubuntu Shell。
  • 检查Windows的摄像头权限:打开Windows设置→隐私和安全性→摄像头,确保“允许应用访问摄像头”开关打开,并且“适用于Linux的Windows子系统”的权限也已开启。

内容的提问来源于stack exchange,提问作者gladys0313

火山引擎 最新活动