ITと雑記とド田舎と

ド田舎在住エンジニアがIT備忘録と雑記を書くブログです

Raspberry pi 3で暗視カメラシステムの構築 その1

実家のハムスターを見張る目的で暗視カメラシステムを構想中です。

ひとまずRaspberry pi 3 Model Bに赤外線カメラモジュールを接続して画像をwebサーバーに送信、webサーバー経由でどこからでも確認できる仕組みを検討しています。

 

システム構成図

思いつくままに描いてみたシステム構成が下図です。想像しながら書いた部分もあるので、問題があれば適宜変更予定。

OpenCVを使って画像認識をおこない、通知機能や録画機能の自動化をできればいいかなと考えています。Herokuの負荷や安全性については全く未調査なので、そちらもおいおい行う予定。Herokuでダメなら安いサーバー1つくらいレンタルしてもいいかな。

f:id:kdn-1017-wttd:20181111094136j:plain

 

暗視カメラ

Amazonで購入。LED赤外線投光器付きの赤外線カメラモジュールにしました。Raspberry Piのカメラ専用端子にリボンケーブルで接続して使うタイプです。

特に問題なく接続できたのですが、ドライバをmodprobeコマンドで毎回手動で読み込まないと認識してくれなかったため「/etc/modules-load.d/moduled.conf」の末尾行に「bcm2835-v4l2」と追記して、起動時にドライバを自動で読み込むようにしました。

OpenCVの準備

python3を使用する予定なのでpythonからOpenCVを使用できるようにします。お手軽なのでpipからインストールする方法にしました。ソースコードからRaspberry pi上でbuildする方法もあります。一応Linux上でbuildしたこともあるのですが、Raspberry Piでbuildすると熱暴走などにも気を付けないといけません。OpenCVに明るい人なら、最新版を必要な機能だけ最適な状態でインストールできるので自前buildもありです。

 まずはOpenCVに必要なモジュールのインストール。

sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

 続いてpythonOpenCVのインストール

pip3 install opencv-python

 この状態でpython側からopencvをインポートするとライブラリがありませんというエラーが何度か表示されるので、さらに追加でライブラリをインストールしていきます。

エラー時に表示されるメッセージをよく読んで検索すれば必要なライブラリが判断できるので、先ほどと同様に「apt」コマンドでインストールしていきましょう。

警告が出たライブラリをメモし忘れていたので以下一例です。ご参考まで。

sudo apt install libcblas-dev libatlas3-base libilmbase12 libqtgui4 libqt4-test

テスト用にカメラから画像を取得して表示する簡単なスクリプトを動かします。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

cap.release()
cv2.destroyAllWindows()

無事に動画が表示されれば成功です。

 次回へ続きます。

参考

Raspberry Pi 3 で専用カメラモジュールを使う

Raspberry Pi3でカメラモジュールをOpenCVで使う - 電気のDIY

PythonでOpenCVを呼び出して、Raspiカメラに写る顔を認識してみた : 試行錯誤な日々