Raspberry Pi にカメラを接続、ちょっとプログラムを組んであげると、カメラで撮影したりできます。
今回は、カメラを接続して、「python-picamera」ライブラリを使用して写真撮影をしてみようと思います。
1. カメラの購入
ともあれ、対応したカメラを購入します。
よくある、セットに付属のカメラでも問題ないと思います。
リボンでつながっているだけなので、こだわる方はカメラのケースも購入されるといいと思います。
|
|
2. Raspberry Pi OS の設定
接続はリボンでつなぐだけなので難しくないと思います。
電源は切った状態で行いましょう。
設定方法などは以前の記事で紹介していますので、よろしければどうぞ。
3. ライブラリのインストール
ここからが今回の新しい内容です。
Pythonからカメラをコントロールする方法はいくつかあるようですが、今回は本家の公式ドキュメントを参考にしています。
使用しているRaspberry Pi OS の状態によっては、すでにインストールされているかもしれません。
まず、以下のコマンドを実行します。LXTerminalで行います。
なお、上2行は、こういうタイミング以外でも、定期的に行ったほうが良いと思います。
たまにしか行わないと時間がかかります。
システムを最新に保ち、セキュリティ対策された、バグなどが少ない状態にしてくれるはずです。
sudo apt-get update sudo apt-get upgrade sudo apt-get install python-picamera
4. Pythonプログラミング
今回は、カレントディレクトリに「capture」というフォルダを作成、その中に1秒ぐらい間隔で「年月日_時分秒.jpg」というファイル名でカメラで撮影した画像を保存します。10回。
なお、「1秒ぐらい間隔」というのは、「撮影しろ」という命令の完了に時間を要するため、自分の状態では2秒間隔で撮影されています。
ソースコードを修正しました。
一度生成したPiCameraインスタンスを使いまわしていたのですが、繰り返し動かすうちにPiCameraインスタンスが作れなくなった、などのトラブルがあったためです。
# -*- coding: utf-8 -*- # 日本語コメントをエラーとしないように、UTF-8で保存 # 使用するライブラリのインポート import os import picamera import datetime from time import sleep # 定数 CAPTURE_DIR = 'capture' # 撮影画像を格納するフォルダ # 継承した場合など、実行されないようにする(現状、意味は特にない) if __name__ == "__main__": # 撮影した画像を格納するフォルダを作成(存在しない場合) if os.path.exists(CAPTURE_DIR) == False : os.mkdir(CAPTURE_DIR) # PiCameraインスタンスを生成 with picamera.PiCamera() as camera: for i in range(0, 10): # 1秒ごとに写真を撮る(10回) # ファイル名は、「年月日時分秒.jpg」とする now = datetime.datetime.now() # キャプチャしてファイル保存 camera.capture(f'{CAPTURE_DIR}/{now.strftime("%Y%m%d_%H%M%S")}.jpg') sleep(1) print('finished')