見出し画像

【puzscan (仮題) 】Webカメラを認識させてOpenCVで遊ぶ

前回の記事(立ち上げ)
管理するにあたってレポジトリ名やプロジェクト名を決める必要があったため、 puzscan(仮題) という名前をふることにしました。

さて、あれから Python版OpenCV のチュートリアルをぼちぼち読んでいたところ、Webカメラのストリーム映像をリアルタイム処理するサンプルがありました。いちいちパズルの盤面写真を用意するより、Webカメラから取れたほうが便利だし、何よりたのしそう。

そこで今回は、パズル盤面のスキャンとは全く関係なく「Webカメラでビデオストリームを取得して、それをリアルタイムでOpenCVに処理させよう」という技術ブログのようなことをやってみます。

本来は Windows11 + WSL2 という環境でやろうとしていたのですが、案の定といいますか、仮想環境をまたぐWebカメラの利用にだいぶてこずったので、WSL2上での開発は断念。
WebカメラをUbuntu側で認識させるところまではいったのですが、肝心のビデオ用のデバイスドライバがないらしく、Linuxカーネルをカスタマイズどうこうしないといけないとのこと (参考: PINTO氏による記事)。
いろいろ調べた結果、開発環境ごと乗り換えるという戦略的撤退に至った次第であります。

純粋なWindows11で作ることにしたので、まずは環境を整備。
VSCode これは普段からテキストエディタとして使ってるのでOK。
Python3.12 最新版ってもう3.12になってたんだねえ。
Gitこれも入っていたのですが、せっかくなので最新版へアップデート。

VSCodeの設定

Windowsだと文字コードがデフォルトで UTF16-LE だったり改行コードがCRLFだったりといろいろ都合が悪いので、今回のプロジェクト用にsettings.json を作り設定を変えます。

$ git clone git@github.com:subaru-saito1/puzscan.git
$ cd puzscan
$ mkdir .vscode
$ echo "hoge" > .vscode/settings.json

settings.jsonの中身を、以下のように変えます。改行コードと文字コードの設定、あとはインデント時のスペースの設定です。後で気になるエディタの設定がでてきたら適宜ここに増やしていきます。

{
    "files.eol": "\n",
    "files.encoding": "utf8",
    "editor.tabSize": 4,
    "editor.insertSpaces": true
}


OpenCVのインストール

前回は非公式のドキュメントを見ながらインストールしようとしていたため詰まりましたが、今回は公式のちゃんとした指示通りに入れます。

このページのコマンド通り、Pythonのパッケージ管理ツールであるpip3コマンドを実行。特にエラーが出ていなければ正常にインストールされており、以下のコードで import cv2 がノーエラーで動くようになっているはず。

たれの画像をリサイズして表示


Webカメラ経由で映像ストリームを読み込ませるのも、特に詰まることなく公式チュートリアル通りにできました。よかった。
リアルタイムでカメラ映像をグレースケールに変換して出力するというもので、ソースコードはほとんど上のままです。

文字化けしてホラーみたいになってしまったたれ

cv2.imshowの行を複数作れば、元映像と編集後の映像とで同時にウィンドウに出すこともできるようです。比較に便利。

今日はなにかと厄介な環境構築周りが無事に済んだので、明日から暇なときにOpenCVのいろんな機能を使って一人遊びしてみようと思います。

次回の記事(未定)


この記事が気に入ったらサポートをしてみませんか?