前→Raspberry Pi Zero WH カメラモジュールで遊ぶ その0
次→Raspberry Pi Zero WH カメラモジュールで遊ぶ その2
本記事では、pythonの設定とカメラモジュールの動作確認を行います。
1. python初期設定
1.1. リンク設定
今回導入したRaspberry Pi OSのバージョンでは、pythonのシンボリックリンクがpython2(2.7.16)に張られていたので、python3(3.7.3)にリンクを張り替えます。
補足として、Raspberry Pi OSのPythonライブラリは、pipよりもapt-getで入れたものの方が高速のようです。
# シンボリックリンクの張り替え
$ cd /usr/bin
$ sudo unlink python
$ sudo ln -s python3 python
2. カメラモジュールの接続
2.1. 接続設定
Raspberry Pi本体にカメラモジュールのケーブルを接続した後、「設定」→「Raspberry Piの設定」→「インターフェース」から、カメラを有効化します。
その後、カメラモジュールが正常に接続されているか、確認します。
# カメラ接続の確認
$ vcgencmd get_camera
"supported=1 detected=1"と表示されれば、正常に接続されています。
2.2. 静止画撮影テスト
テストとして、静止画を撮影してみます。
# デフォルトでは/home/piに保存
$ sudo raspistill -o image.jpg
3. 各種pythonライブラリの追加
3.1. OpenCV
はじめにOpenCVが依存しているライブラリをインストールします。
# libhdf5-xxxのバージョン確認(今回のバージョンは103)
$ sudo apt-cache search libhdf5
# 各種ライブラリのインストール
$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libjasper-dev
次にOpenCVをインストールします。
# OpenCVのインストール
$ sudo pip3 --default-timeout=1000 install opencv-python
このままだとimport cv2
でエラーを吐くことがあるため、環境変数を設定します。
"~/.bashrc"に以下を追記し、source ~/.bashrc
を実行します。
# ~/.bashrcに追記
export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
4. OpenCVを使って動かしてみる
4.1. 表示テスト
カメラからキャプチャした画面をグレースケール化して表示、qキーが押されたら終了するコードです。
import cv2
def capture():
# 0 is a camera number.
cap = cv2.VideoCapture(0)
print('### Break is \'q\' key.')
while(cap.isOpened()):
# 'ret' is a boolean.
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
# Break is 'q' key.
if cv2.waitKey(1) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__=='__main__':
capture()