目录
目录
目录
一.环境
二.具体步骤
①列出当前windows电脑下的所有usb设备:
②绑定这个摄像头BUSID:
③链接这个摄像头BUSID到wsl2中:
④在wsl2中使用命令lsusb进行查看,会发现摄像头设备,如图所示:
⑤在wsl2中,查看是否拥有video设备:
⑥区分主摄像头:
⑦测试:
一.环境
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()测试完成会出现画面:
后续加载自己的模型,做一些视觉的检测等。
注:文中的一些命令工具,需自行下载。