【Python】Raspberry Pi + Python + OpenCVで監視カメラを作ってみた
2019.10.16
こんにちは、せんだです。
10月ということでようやく厳しい暑さも落ち着いてきましたね。
自転車通勤もやや快適になってきましたし、過ごしやすい季節になってきたのかなと。
さて、今回はRaspberry Pi、Python、OpenCVを使って監視カメラアプリを作ってみたいと思います!
お題目はこちら!
今回やること
- OpenCVのインストール
- Python+OpenCVでプログラム実装
環境
端末:Raspberry pi3
カメラ:お好みのWebカメラ
OS:Raspbian GNU/Linux 10 (buster)
Python: 3.7.3
では、早速やってみましょう!
OpenCVのインストール
まずはOpenCVのインストールからやります。ざっくり言ってしまうとPythonからWebカメラ経由で得た映像をキャプチャするのにOpenCVを利用します。
こちらのサイトが大変参考になりました。
1. ライブラリのインストール
OpevCVの利用に必要なライブラリをインストールします。
1 2 3 | $ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103 $ sudo apt-get install libatlas-base-dev $ sudo apt-get install libjasper-dev |
2. opencv-pythonのインストール
pythonからOpenCVを利用する為のモジュールをインストールします。
1 | $ sudo pip3 install opencv-python |
3. Pythonから読み込んでみる
うまくインストールができていない場合はimportする時点でエラーが発生するので、とりあえずimportしてバージョン確認してみます。エラーが発生しなければ、OpenCVのインストールは完了です
1 2 3 4 5 6 7 | $ python3 Python 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.4.3' |
Python + OpenCVでカメラ機能を実装する
コードは以下の通りです。Enterを入力するとスクリプトが停止します。
main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | from datetime import datetime import cv2, os def main(): current_dir = os.path.dirname(os.path.abspath(__file__)) + '/' cam = cv2.VideoCapture(0) if cam == None: return False while True: # カメラから映像を読み込む _, img = cam.read() # 保存先を設定 shoot_time = datetime.now() image_file = current_dir + shoot_time.strftime('%Y%m%d_%H%M%S%f') +'.jpg' # 画像ファイルとして書き出す cv2.imwrite(image_file, img) # Enterキーを入力した際に撮影を終了する if cv2.waitKey(1) == 13: break # 事後処理 cam.release() cv2.destroyAllWindows() if __name__ == '__main__': main() |
では、実行してみましょう!
スクリプトと同じディレクトリにキャプチャした画像ファイルが保存されていれば正常に動作しています。
1 2 3 4 5 6 7 8 | $ python3 main.py $ ls 20191004_150455968142.jpg 20191004_150456032067.jpg 20191004_150456321983.jpg 20191004_150456828986.jpg 20191004_150457327940.jpg 20191004_150457836103.jpg |
まとめ
みなさんいかがでしたでしょうか?
実はこの実装をするにあたり、一番ハマったのはOpevCVのインストールでした。
何度かトライ&エラーを繰り返した後、結局OSをRaspbian Busterに入れ直してやっとこさという感じでした。
聞くところによると、ラズパイにOpenCVをインストールするのはハマる人が結構いるらしいです…
それでは、また!!
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io