WSL2でUSBカメラ

 まさかのWSL2ではUSBカメラ使えないので、WSLのカーネルいじるらしい。

github.com

 B-ingちゃんに聞いたらうまいこといった。

 手順だけ書いとくとpower shellをAdminで起動して、USBカメラをアタッチするとWSLから見れるようになったみたい。

PS C:\WINDOWS\system32> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-10   056e:7019  ELECOM 1MP Webcam, Webcam internal mic                        Shared


Persisted:
GUID                                  DEVICE

PS C:\WINDOWS\system32> usbipd wsl detach --busid 1-10

WSLでDISPLAYにwindowsのipconfigで調べたIPとDISPLAYのポート番号を指定する。
WSLの/dev/video0とか/dev/video1とかにUSBカメラがマウントされるので、そいつのパミッションを変えて、v412-ctlでカメラをWSLが認識してるか調べる。
VcXSRVは起動してるものとする。

$ export DISPLAY=1292.168.1.194:0
$ sudo chmod 777 /dev/video*
$ $ sudo v4l2-ctl --list-devices
ELECOM 1MP Webcam: ELECOM 1MP W (usb-vhci_hcd.0-1):
        /dev/video0
        /dev/video1
        /dev/media0

guvcviewを開くとカメラの映像をWSLから見れる。

$ guvcview

# 追記

WSL2でコンテナでやるとうまく認識しなかったので、これをやった。

forum.opencv.org