当前位置: 首页 > news >正文

WSL2调用摄像头并使用OpenCV - 教程

WSL2调用摄像头并使用OpenCV - 教程

WSL2(Windows Subsystem for Linux 2)默认情况下无法直接访问 USB 设备,包括摄像头。本文将详细介绍如何通过重新编译 WSL2 内核来启用 USB 摄像头支持。

前言

要在 WSL2 中使用 USB 摄像头,我们需要完成以下三个主要步骤:

  1. 将摄像头从 Windows 连接到 WSL2
  2. 重新编译 WSL2 Linux 内核以包含摄像头驱动
  3. 配置 WSL2 使用新编译的内核

一、将摄像头连接到 WSL2

1.1 安装 USB/IP 工具

以管理员身份打开 PowerShell,执行以下命令安装 usbipd

winget install usbipd

1.2 列出已连接的 USB 设备

usbipd list

该命令会显示所有连接到系统的 USB 设备,找到你的摄像头对应的 BUSID(例如 1-6)。

1.3 绑定摄像头设备

将摄像头绑定以便共享给 WSL2(假设摄像头的 BUSID 是 1-6):

usbipd bind -b 1-6

1.4 验证绑定状态

再次查看设备列表,确认摄像头状态已更新为 Shared

usbipd list

1.5 将设备附加到 WSL2

usbipd attach -w -b 1-6

再次运行usbpid list, 摄像头STATE变为Attached

1.6 在 WSL2 中验证连接

打开 WSL2 终端,使用以下命令验证摄像头已成功连接:

lsusb

如果看到摄像头设备信息,说明连接成功。

然而此时运行调用摄像头的代码,会显示报错,因为WSL2是一个独立的子系统,并没有摄像头驱动,需要继续重新编译内核

[ WARN:0@8.994] global cap_v4l.cpp:914 open VIDEOIO(V4L2:/dev/video0): can't open camera by index
[ WARN:0@8.994] global cap.cpp:478 open VIDEOIO(V4L2): backend is generally available but can't be used to capture by index
无法打开摄像头 0
错误: 无法打开摄像头

二、重新编译 WSL2 Linux 内核

2.1 更新 WSL

在 PowerShell 中执行:

wsl --update

2.2 安装编译依赖

在 WSL2 Ubuntu 终端中,更新系统并安装必要的编译工具:

sudo apt update && sudo apt upgrade -y && sudo apt install -y build-essential flex bison dwarves libssl-dev libelf-dev libncurses-dev

2.3 检查 WSL2 内核版本

uname -r

记录输出的版本号,例如 6.6.87.2-microsoft-standard-WSL2

2.4 下载对应版本的内核源码

根据上一步获取的版本号,下载对应的 WSL2 内核源码:

cd /usr/src
TAGVERNUM=6.6.87.2
TAGVER=linux-msft-wsl-${TAGVERNUM}
sudo git clone \-b ${TAGVER} \https://github.com/microsoft/WSL2-Linux-Kernel.git \${TAGVERNUM}-microsoft-standard \&& cd ${TAGVERNUM}-microsoft-standard

2.5 准备内核配置文件

sudo cp /proc/config.gz config.gz \&& sudo gunzip config.gz \&& sudo mv config .config

2.6 配置内核选项

启动内核配置界面:

依次选择Device Drivers - Multimedia support

将Filter media drivers 的方框中按Y,注意按Y以后显示的是 *

然后继续来到Media device types,Cameras and video grabbers 方框输入Y

上述流程可总结如下

sudo make menuconfig
```
在配置界面中,使用方向键导航,按 `Y` 键选中选项(选中后会显示 `[*]`),按照以下路径启用所需的驱动:
**必须启用的选项:**
```
Device Drivers→ Multimedia support→ Filter media drivers [Y]→ Media device types→ Cameras and video grabbers [Y]

操作说明:

  • 使用方向键上下移动
  • Enter 进入子菜单
  • Y 启用选项(显示为 [*]
  • N 禁用选项
  • M 编译为模块(显示为 <M>

配置完成后,选择 Save 保存配置,然后选择 Exit 退出。

2.7 编译内核

使用多核并行编译以加快速度:

sudo make -j$(nproc) KCONFIG_CONFIG=.config \&& sudo make modules_install -j$(nproc) \&& sudo make install -j$(nproc)

编译过程可能需要较长时间,请耐心等待。

三、安装和配置新内核

3.1 复制内核文件到 Windows

编译完成后,将生成的 vmlinux 内核文件复制到 Windows 系统:

sudo cp vmlinux /mnt/c/Users//WSL2/kernel-6.6.87.2

注意:将 <UserName> 替换为你的 Windows 用户名,目标路径可以自定义。
而且这是将内核文件改路径以后重命名为kernel-6.6.87.2,不是放到kernel-6.6.87.2文件夹中

3.2 创建 WSL 配置文件

在 Windows 用户目录下创建 .wslconfig 配置文件:

vim /mnt/c/Users//.wslconfig

i 键进入编辑模式,添加以下内容:

[wsl2]
kernel=C:\\Users\\\\WSL2\\kernel-6.6.87.2

注意:

  • <UserName> 替换为你的 Windows 用户名
  • Windows 路径需要使用双反斜杠 \\

ESC 退出编辑模式,输入 :wq 保存并退出。

四、测试摄像头

4.1 重启 WSL2

在 PowerShell 中执行:

wsl --shutdown

4.2 重新连接摄像头

usbipd attach -w -b 1-6

4.3 验证设备连接

在 WSL2 终端中:

lsusb

4.4 验证新内核加载

检查内核版本,如果成功加载自定义内核,版本号末尾会显示 + 号:

uname -r -v
```
输出示例:
```
6.6.87.2-microsoft-standard-WSL2+

4.5 安装和测试摄像头应用

安装 V4L 工具和摄像头查看器:

sudo apt install v4l-utils guvcview

启动摄像头应用:

sudo guvcview

如果一切正常,你应该能看到摄像头的实时画面。

4.6 使用OpenCV

继续在WSL2中新建如下python脚本,使用OpenCV展示

import cv2
cap = cv2.VideoCapture(0)  # /dev/video0
cap.set(3,640)
cap.set(4,480)
cap.set(cv2.CAP_PROP_FPS,10)
#cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter.fourcc('Y','U','Y','V')) # 下面不行可以尝试这个
cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter.fourcc('M','J','P','G'))
while(True):ret, frame = cap.read()if not ret:print("Failed to read the image.")breakcv2.imshow('Video', frame)key = cv2.waitKey(1)
cap.release()

即可成功调用摄像头

参考资料

  1. PINTO0309/wsl2_linux_kernel_usbcam_enable_conf
  2. WSL2 Webcam Support - Medium
  3. https://blog.csdn.net/chengpengfei09121870/article/details/142762468?ops_request_misc=elastic_search_misc&request_id=db0ed97b4b37eb05f6c98156194cf227&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticCommercialInsert~search_v2-3-142762468-null-null.142^v102^pc_search_result_base3&utm_term=WSL2%E8%B0%83%E7%94%A8%E6%91%84%E5%83%8F%E5%A4%B4&spm=1018.2226.3001.4187

总结

通过重新编译 WSL2 内核并启用相应的 USB 摄像头驱动,我们可以在 WSL2 环境中成功使用 USB 摄像头。虽然这个过程较为复杂,但一旦配置完成,就可以在 Linux 环境中进行各种摄像头相关的开发和测试工作。

希望本教程对你有所帮助!如有问题,欢迎在评论区讨论。

http://www.jsqmd.com/news/46787/

相关文章:

  • unity动态将3d标牌UI加载到模型子物体下,UI变形问题
  • 2025湛江一对一辅导机构测评榜:从城区到县域的靠谱补习方案全解析
  • 常州一对一家教机构哪个好?2026权威测评榜单:从师资到提分,5家主流平台深度对比
  • 二次验证码介绍及使用
  • 2025汕头一对一家教机构口碑排名:从小学到高中,权威测评5家靠谱机构,实用方案覆盖金平龙湖等全区域
  • Veeam Data Platform 13.0 发布 - 数据保护和管理解决方案
  • 2025年7大AI写论文工具推荐|一键生成+文献智能整合,毕业论文查重无忧!
  • 国标GB28181算法算力平台EasyGBS如何为养老院构建全天候安全防线?
  • 江苏省做合同纠纷比较靠谱的律所推荐及选择参考
  • 如何结合langchain、neo4j搭建关联检索问答
  • 2025年四川科技展馆设计公司权威推荐榜单:科技展厅设计/科技展览设计/城市规划馆设计源头公司精选
  • 江苏省婚姻家庭纠纷律所推荐:专业法律服务机构盘点
  • 携手哲讯,以智慧赋能,驾驭数字未来——您值得信赖的SAP本土化专家
  • 2025中山一对一辅导机构权威测评榜!家教培训平台口碑实测总结报告
  • 学习率对于PPO训练的作用
  • 佛山一对一家教机构哪家好?2025 最新口碑测评与高性价比推荐指南
  • 徐州一对一辅导机构哪个好?2026最新家教平台TOP5权威测评!精准提分数据溯源
  • 微波烘干设备适用物料及工业应用场景解析
  • 微波烘干设备操作流程及相关设备应用解析
  • 2025 最新推荐碳纤木门厂家口碑排行榜:PUR 无缝封边 + 45 磁吸静音技术领衔,环保无甲醛优质企业全解析耐磨防刮/环保无甲醛/防污易清洁/耐腐蚀/铝/LVL 龙骨/复合碳纤木门公司推荐
  • 2025 粉体输送系统十大厂家推荐!技术硬核 + 口碑爆棚,工业生产选型不踩坑
  • 2025年牛粪有机肥翻抛机供应商权威推荐榜单:轮盘式翻抛机/链式翻抛机/槽式翻抛机设备源头厂家精选
  • 2025年抽沙设备订做厂家权威推荐榜单:河道抽沙船/采沙船/环保抽沙船源头厂家精选
  • 2025 最新旅行社权威推荐榜:国际协会认证 + 百万用户口碑,云南旅行社/昆明旅行社服务公司推荐
  • 事倍功半是蠢蛋61 milvus的Attu数据未刷新
  • 甘孜州一对一辅导机构推荐:2026哪个家教机构口碑好?终极测评出炉!
  • 2025年电力电缆生产厂家权威盘点(11月新):中低、低压、中压、变频、聚乙烯绝缘、聚氯乙烯绝缘电缆生产厂家推荐
  • 2025 宁波一对一辅导哪家好?家教最新推荐榜单
  • 卡码网47:Djikstra算法
  • 2025年天津中压电缆生产厂家推荐:涵盖变频电缆、聚乙烯绝缘电缆生产厂家!(11月新版)