解决WSL2识别不到USB摄像头
我的usb摄像头设备端口是1-7,正常新加的usb设备会出现Not shared,因为我之前在这个端口加载过,所以直接到③步骤就行;命令2(权限):ls -l /dev/video*①卸载linux摄像头内核驱动(此命令可不执行)后续加载自己的模型,做一些视觉的检测等。注:加载完成之后,需要重启一下wsl2。注:文中的一些命令工具,需自行下载。这条命令运行完会出现步骤①的现象;xxx为你自己的用户
目录
目录
④在wsl2中使用命令lsusb进行查看,会发现摄像头设备,如图所示:
一.环境
win11+wsl2+ubuntu20.04
二.具体步骤
1.打开powershell,先将usb设备链接到wsl2中:
①列出当前windows电脑下的所有usb设备:
usbipd list
如图:

我的usb摄像头设备端口是1-7,正常新加的usb设备会出现Not shared,因为我之前在这个端口加载过,所以直接到③步骤就行;
②绑定这个摄像头BUSID:
sudo usbipd bind -b 1-7
这条命令运行完会出现步骤①的现象;
③链接这个摄像头BUSID到wsl2中:
usbipd attach --wsl --busid 1-7
再次usbipd list查看,会发现由Shared——>Attached,代表已经链接到了wsl2中,如图所示:

④在wsl2中使用命令lsusb进行查看,会发现摄像头设备,如图所示:

⑤在wsl2中,查看是否拥有video设备:
ls /dev/video*
如图(出现就直接跳到⑥):
![]()
未出现:
①卸载linux摄像头内核驱动(此命令可不执行)
sudo rmmod uvcvideo②加载摄像头驱动模块
sudo modprobe uvcvideo注:加载完成之后,需要重启一下wsl2
③查看video所属组以及权限:
命令1(所属组):groups
如果没有video,则需要将video加入到自己的用户组:
usermod -aG video xxxxxx为你自己的用户名,并使用;
命令2(权限):ls -l /dev/video*
⑥区分主摄像头:
v4l2-ctl -d /dev/video0 --list-formats-ext
会出现如图所示:

通常,支持高分辨率(如 1920x1080)和常见像素格式(如 MJPEG、YUYV)的是主摄像头。
⑦测试:
使用测试命令行
guvcview --device=/dev/video0 --audio=none

使用测试代码
import cv2
from ultralytics import YOLO
cap = cv2.VideoCapture(0,cv2.CAP_V4L2) # /dev/video0
cap.set(3,480)
cap.set(4,640)
cap.set(cv2.CAP_PROP_FPS,30)
#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.")
break
cv2.imshow('YOLO Detection', frame)
key = cv2.waitKey(1)
if key & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
测试完成会出现画面:

后续加载自己的模型,做一些视觉的检测等。
注:文中的一些命令工具,需自行下载。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)