(参考)Raspberry Pi Camera Module 3の利用 - wataniguchi/EV3RT GitHub Wiki

v3カメラの利用準備

  1. RasPike Wiki Raspi_setupページの「Raspberry Pi Cameraの設定」の手順に従いイネーブルした"legacy camera support"をディセーブルする。

  2. LCCV (libcamera bindings for OpenCV)ライブラリのDebianパッケージをラズパイへダウンロードする。このファイルは、ラズパイ上でソースコードからビルドしたLCCVをcheckinstallでパッケージ化したものである。

  3. ダウンロードしたLCCVライブラリをインストールする。pi@peach:~ $ sudo gdebi lccv-dev_20230517-1_armhf.deb

  4. インストールした共有ライブラリの依存関係を更新して、動的利用可能にする。pi@peach:~ $ sudo ldconfig

OpenCVライブラリを使うPythonサンプルプログラムをv3カメラで動かす

  1. OpenCVサンプルフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/test-opencv-cam3

  2. サンプルプログラム"testTraceCam01"を実行する。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv-cam3 $ python testTraceCam01.py

  3. サンプルプログラムは無限ループ構造になっている。実行を終了するには、画像またはトラックバーのウィンドウがアクティブの状態でキーボードから"q"または"Q"を入力するか、ターミナルでctrl-Cを入力する。

  4. サンプルプログラムの目的は、以下のとおり:

    1. testTraceCam012値化に使うHSVの閾値をトラックバーで変化させながらラインの色変化や環境光の変化に強い閾値を見出すこと。 スクリーンショット 2023-05-14 11 36 14

    2. testTraceCam02ラインのエッジの検出と追跡目標の設定プロトタイピング。丸点は検知中のラインの重心。垂線は追跡目標としたエッジの重心。 スクリーンショット 2023-05-14 11 44 13

    3. testTraceCam03より実用的なエッジ追跡コード。青四角がROI(Region Of Interest)、黄緑がROI内のライン、赤点が追跡目標。2値化にはHSVではなくグレイスケールを使っている。 スクリーンショット 2023-05-14 11 45 01

OpenCVライブラリを使うC++サンプルプログラムをv3カメラで動かす

  1. OpenCVサンプルフォルダへ移動する。pi@peach:~ $ cd ~/etrobo/RasPike/sdk/workspace/test-opencv-cam3

  2. サンプルプログラム"testTraceCam01"をコンパイル&リンクする。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv-cam3 $ g++ testTraceCam01.cpp -std=gnu++17 `pkg-config --cflags --libs opencv4` `pkg-config --cflags --libs libcamera` -llccv -I../2023base_pri -o testTraceCam01

  3. サンプルプログラム"testTraceCam01"を実行する。pi@peach:~/etrobo/RasPike/sdk/workspace/test-opencv-cam3 $ ./testTraceCam01

  4. C++のサンプルプログラムは、Pythonと同一のロジックを表現している。