Armadillo-IoT G4およびArmadillo-X2はVPUによる高速エンコード・デコードや、
MIPI・UVC・GigE等のカメラとの接続が可能で、画像処理機能を持ったエッジ機器としてご利用いただけます。
近年では、画像処理アプリケーションを構築する際にOpenCVとPythonを使われる事例をよく目にします。
この記事ではArmadillo-IoT G4およびArmadillo-X2でOpenCV+Pythonの開発環境を構築するための方法をご案内します。
前提事項
Armadillo-IoT G4およびArmadillo-X2はArmadillo Base OSで動作しています。
Armadillo Base OSはコンテナ形式でのアプリケーション開発を基本としています。
そのため、今回の記事でもアプリケーションを開発・動作させるためのコンテナの作成を行います。
ベースとなるコンテナの作成
Armadillo-IoT G4およびArmadillo-X2の画像処理性能を最大限に活用するため、アットマークテクノが配布しているDebianイメージを使用してコンテナを作成します。
あらかじめ、下記を参考にat-debian-imageが組み込まれた状態としておいてください。
9.4.3. アットマークテクノが提供するイメージを使う
[armadillo ~]# vi /etc/atmark/containers/opencv_example.conf set_image at-debian-image set_command sleep infinity add_devices /dev/dri /dev/galcore add_devices /dev/mxc_hantro /dev/mxc_hantro_vc8000e add_devices /dev/ion add_devices /dev/input add_volumes /run/udev:/run/udev:ro add_volumes /opt/firmware:/opt/firmware:ro add_volumes /tmp/xdg_home:/run/xdg_home add_args --env=XDG_RUNTIME_DIR=/run/xdg_home add_device /dev/video2 *USBカメラのデバイスファイル名がvideo2であるという想定で記載しています。適宜読み替えてください。 confファイル保存 [armadillo ~]# persist_file /etc/atmark/containers/opencv_example.conf コンテナ起動 [armadillo ~]# podman_start opencv_example
パッケージインストール
コンテナ内にアプリケーション開発・実行に必要なパッケージをインストールします。
PythonとOpenCV以外に、下記をインストールします。
- GStreamer:マルチメディアフレームワーク
- v4l-utils:Linuxでメディアデバイスを扱うためのユーティリティー及びライブラリ
- viエディタ:テキストエディタ(nano等でも代替可能
コンテナ内に入る [armadillo ~]# podman exec -it opencv_example bash インストール [container ~]# apt -y update && apt -y upgrade [container ~]# apt -y install gstreamer1.0-imx gstreamer1.0-imx-tools \ gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ v4l-utils python3 python3-pip python3-opencv libopencv-dev vim
インストール確認
インストールされたOpenCVのバージョンと、OpenCVのビデオソースにGStreamerが使用可能であることを確認します。
[container ~]# python3 >>> import cv2 バージョン確認 >>> cv2.__version__ ビデオソースの確認 >>> print(cv2.getBuildInformation()) 以下のように表示されることを確認する Video I/O: GStreamer: YES (1.18.4)
コンテナイメージの保存
このままだと再起動後インストールした内容が全て消えてしまうので、コンテナへの変更を全て保存します。
イメージの保存 [armadillo ~]# podman commit opencv_example opencv_example コンテナ自動起動時の参照先イメージの変更 [armadillo ~]# vi /etc/atmark/containers/opencv_example.conf 冒頭の部分を下記のように書き換えます。 set_image opencv_example confファイル永続化 [armadillo ~]# persist_file /etc/atmark/containers/opencv_example.conf
動作確認
保存したイメージから想定通りにコンテナが作成されることを確認します。
コンテナを起動後に、OpenCVがインストールされていることを確認します。
[armadillo ~]# podman_start opencv_example [armadillo ~]# podman exec -ti opencv_example bash [container ~]# python3 >>> import cv2 >>> cv2.__version__