Arducam imx519の使い方
Kickstaterで出資を募集していたArducamの新しい高性能カメラが入手できたので使い方について紹介します。
1600万画素、AF付きで$25と、ラズパイの公式カメラに比べてコスパに優ますが、使用方法が公式カメラと変わっているので注意が必要です。
特にPythonスクリプトで動かす場合に、同じみのライブラリであるPicameraが使えないので、今回は代替として使えそうなPicamera2についても紹介します。
インストール
sudo raspi-configでGPUメモリの割当を多くしておきます。(GUI使う場合)
公式のマニュアルに従ってインストール
sudo apt update
wget -O install_pivariety_pkgs.sh https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/releases/download/install_script/install_pivariety_pkgs.sh
chmod +x install_pivariety_pkgs.sh
./install_pivariety_pkgs.sh -p libcamera_dev
./install_pivariety_pkgs.sh -p libcamera_apps
./install_pivariety_pkgs.sh -p imx519_kernel_driver
再起動後に以下のコマンドを実行して'still capture image received'とでていればOKです。CLI環境だとプレビュー表示無いですが、GUI環境だとカメラのプレビューが表示されるっぽいです。
libcamera-still -t 1 -o test.jpg --autofocus
Picamera2とは
RasbianがBullseyeになってからカメラ関係の制御はlibcameraベースに置き換わりました。これにより、様々なカメラが使えるようになった反面picameraのようなpythonから制御するようなライブラリの開発が未完成のため、少々使い勝手が悪い状況でした。
そんな中、ようやくpicameraの後継として登場したpythonライブラリがpicamera2です。
まだプレビュー版のリリースということもあり、インストールが少し面倒ですのでやり方を書いておきます。
Picamera2のインストール方法
pipでインストールできるようになったので以下のコマンドだけでOKです。(6/13追記)
sudo apt install -y python3-libcamera python3-kms++
sudo apt install -y python3-prctl libatlas-base-dev ffmpeg libopenjp2-7 python3-pyqt5
pip3 install numpy --upgrade
NOGUI=1 pip3 install picamera2
#Opencvはお好みで
apt install -y python3-opencv
以下の手順は不要です。(6/13追記)
Libcameraをビルドする環境を整えます。
sudo apt install -y python3-pip git
sudo pip3 install jinja2
sudo apt install -y libboost-dev
sudo apt install -y libgnutls28-dev openssl libtiff5-dev
sudo apt install -y qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5
sudo apt install -y meson
sudo pip3 install pyyaml ply
sudo pip3 install --upgrade meson
sudo apt install -y libglib2.0-dev libgstreamer-plugins-base1.0-dev
Picamera2用のlibcameraリポジトリをGitから取得してカレントディレクトリを変更します。
git clone --branch picamera2 https://github.com/raspberrypi/libcamera.git
cd libcamera
mesonを実行
meson build --buildtype=release -Dpipelines=raspberrypi -Dipas=raspberrypi -Dv4l2=true -Dgstreamer=enabled -Dtest=false -Dlc-compliance=disabled -Dcam=disabled -Dqcam=disabled -Ddocumentation=disabled -Dpycamera=enabled
ビルドしてインストールします。raspberrypi3以前を使っている場合-j 2オプションをつけないとビルド中にハングします。
ninja -C build -j 2
sudo ninja -C build install
カレントディレクトリをルートに戻したら今度はDRM/KMSをビルドします。
cd ~
git clone https://github.com/tomba/kmsxx.git
cd kmsxx
git submodule update --init
sudo apt install -y libfmt-dev libdrm-dev
meson build
ninja -C build -j 2
v4l2を入れます。
cd ~
git clone https://github.com/RaspberryPiFoundation/python-v4l2.git
Picamra2とその他必要なライブラリをインストールします。
cd ~
sudo pip3 install pyopengl
sudo pip3 install pillow
sudo pip3 install v4l2-fix
sudo apt install -y python3-pyqt5
sudo apt install -y libopenjp2-7-dev
git clone https://github.com/raspberrypi/picamera2.git
.bashrcに環境変数を追加します。
echo "export PYTHONPATH=/home/pi/picamera2:/home/pi/libcamera/build/src/py:/home/pi/kmsxx/build/py:/home/pi/python-v4l2" >> ~/.bashrc
opencvも必要なのでインストールします。
sudo pip3 install opencv-python==4.4.0.46
sudo apt install -y libatlas-base-dev
sudo pip3 install numpy --upgrade
恐らくraspberrypi3以前のものを使っている場合、picamera2使用時にエラーで落ちるので、/boot/cmdline.txtをテキストエディタで開いてcma=400Mを追記して再起動して下さい。
以上でPicamera2の導入が完了です。
使ってみる
以下のようなスクリプトを組んで動かしてみます。
#2022年3月15日にpicamera2の大幅な変更があったので一部修正しました
#from picamera2 import *
from picamera2.picamera2 import *
#from null_preview import *
from time import sleep
picam2 = Picamera2()
#preview = NullPreview(picam2)
picam2.start_preview()
preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()
picam2.configure(preview_config)
picam2.start()
sleep(2)
picam2.switch_mode_and_capture_file(capture_config, "test.jpg")
Picameraほど快適ではないですが、ひとまずpythonからカメラ制御ができるようになりました。Picamera2のドキュメント見るとシャッタースピードや解像度等の各種パラメータもいじれます。(細かい制御に関しては、また別の記事で)
2022/3/18 フォーカス制御について記事を作成しました。
少し試行錯誤が必要でしたが、Picamera2のおかげでFacTransの開発も一歩前進しました。
ここまで読んで頂きありがとうございました。