【第4回】WSL2にUbuntu 22.04 LTSを導入する(Webカメラを使う)

公開日:2022年4月25日
最終更新日:2022年8月27日

はじめに

以前Ubuntu 20.04でカーネルビルドを行い同様のことをしました。
その時に作成したカーネルがそのまま使用できました。
カーネルビルドはこちらを参照して下さい。
touch-sp.hatenablog.com

usbipd-winのインストール

Windows側でやること

最新版はバージョン2.2.0ですが自分の環境ではうまく動作しませんでした。
バージョン1.3を使用します。
下記サイトから「usbipd-win_1.3.0.msi」をダウンロードして実行します。
Release usbipd-win 1.3.0 · dorssel/usbipd-win · GitHub

WSL2側でやること

sudo apt install hwdata
sudo apt install linux-tools-generic

「linux-tools-5.15.0-46-generic」がインストールされたのでそれを「/etc/sudoers」に書き込みました。
実際には

sudo visudo

上記コマンドでエディタを起動させ「secure_path」に「/usr/lib/linux-tools/5.15.0-46-generic:」を追加します。

Defaults        secure_path="/usr/lib/linux-tools/5.15.0-46-generic:/usr/local/sbin:/usr/local/bin:/usr/sbin:/......

こんな感じです。


これでWebカメラが使えるようになります。

接続方法

これらを参照して下さい。
touch-sp.hatenablog.com
ascii.jp

注意

PythonでOpenCVを使ってWebカメラを使おうと思うとスクリプトをsudoで実行する必要があります。
以下を実行すると回避できます。

sudo chmod 777 /dev/video*

補足

動作確認できたPythonスクリプトです。

import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    
    cv2.imshow('normal', frame)   

    if cv2.waitKey(1) & 0xFF == 27:
        break
    
cap.release()
cv2.destroyAllWindows()

追記

以下のようなエラーが出ることがあります。解決方法を載せておきます。

エラー内容【1】

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解決方法

sudo apt install libgl1-mesa-dev

エラー内容【2】

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "cvenv/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

解決方法

sudo apt install python3-pyqt5

記事一覧

「WSL2にUbuntu 22.04 LTSを導入する」シリーズの記事一覧はこちら