raspberry pi high quality camera で写真を撮るまで いつかちゃんと書く

raspberry pi high quality cameraをいただいたので使えるようになる

はじめに感想

やっぱり物理は ~~めんどくさい~~ 物理的な問題も考えないといけないから難しいなと思った。

プログラミングするまでに時間がかかるのと、コード以外でエラーがそこそこ出るのが辛いなと思った。

Raspberry Pi High Quality Cameraで写真を撮るまで

この記事では、Raspberry Pi High Quality Cameraを使用して写真を撮影するまでの手順を詳しく解説します。ハードウェアの接続から、必要なソフトウェアのインストール、そしてPythonコードを使った撮影方法まで、順を追って説明していきます。


はじめに

Raspberry Pi High Quality Cameraは、優れた解像度とレンズ交換が可能な点が魅力です。プロジェクトやIoT用途、または自宅での監視カメラとしても利用できます。今回は、Pythonのライブラリ「Picamera2」を使い、簡単なスクリプトで写真を撮影する方法を紹介します。


必要なもの

  • Raspberry Pi(Raspberry Pi 4など)
  • Raspberry Pi High Quality Camera本体
  • 対応レンズ
  • microSDカード(Raspberry Pi OSがインストール済みのもの)
  • インターネット接続(必要なパッケージのインストールのため)
  • また、Pythonの仮想環境を利用することをおすすめします。記事内では、venv を利用した環境構築例も記載します。


    1. ハードウェアのセットアップ

  • カメラモジュールの接続

      Raspberry Pi本体の専用CSIポートに、High Quality Cameraのフラットケーブルを差し込みます。ケーブルの向きに注意し、接続が確実であることを確認してください。

  • Raspberry Piの起動

      Raspberry Pi OSがインストールされたmicroSDカードを挿入し、Raspberry Piを起動します。

  • カメラの有効化

      ターミナルで次のコマンドを実行し、raspi-config を起動します:

      sudo raspi-config
      

      ※ メニュー内の「Interface Options」から「Camera」を選択し、有効化します。設定後、再起動してください。


  • 2. ソフトウェアの準備

    必要なライブラリのインストール

    Raspberry Pi OSでは、公式リポジトリから python3-picamera2 パッケージも提供されていますが、今回は最新版の Picamera2 ライブラリ(Pythonパッケージ)を使用する方法をご紹介します。

  • システムのアップデート
      sudo apt update
      sudo apt upgrade
      
  • 依存パッケージのインストール

      以下のコマンドで、ビルドに必要なライブラリをインストールします。

      ※ すでにインストール済みの場合はスキップしてください。

      sudo apt install libcap-dev python3-dev
      
      sudo apt install python3-picamera2 --no-install-recommends
      

      ???

  • 仮想環境の作成と有効化

      プロジェクト用のディレクトリを作成し、Pythonの仮想環境をセットアップします。

      mkdir ~/picamera2-project
      cd ~/picamera2-project
      python3 -m venv venv
      source venv/bin/activate
      
      python3 -m venv --system-site-packages venv
      

      ???

  • Picamera2とその他必要なパッケージのインストール

      仮想環境内で以下のコマンドを実行します:

      pip install picamera2
      

      ※ インストール中に依存パッケージ(python-prctlなど)のビルドエラーが出た場合は、システム側の libcap-devpython3-dev が正しくインストールされているか確認してください。


  • 3. Pythonで写真を撮影する

    インストールが完了したら、実際にPythonコードを書いて写真を撮ってみましょう。以下は、簡単な撮影スクリプトの例です。

    #!/usr/bin/env python3
    from picamera2 import Picamera2
    import time
    
    def main():
        # Picamera2インスタンスの生成
        picam2 = Picamera2()
    
        # カメラの設定(デフォルト設定の場合)
        camera_config = picam2.create_preview_configuration()
        picam2.configure(camera_config)
    
        # カメラの起動
        picam2.start()
        print("カメラが起動しました。3秒後に写真を撮影します...")
        time.sleep(3)  # 少し待機
    
        # 写真の撮影
        image = picam2.capture_array()
    
        # 画像を保存
        import cv2  # OpenCVライブラリがある場合(無ければpip install opencv-python)
        cv2.imwrite("capture.jpg", image)
        print("写真を 'capture.jpg' に保存しました。")
    
        # カメラの停止
        picam2.stop()
    
    if __name__ == '__main__':
        main()
    

    スクリプトの実行方法

  • 上記のコードを capture.py として保存します。
  • 仮想環境が有効な状態で次のコマンドを実行します:
      python3 capture.py
      
  • 数秒後、同じディレクトリに capture.jpg というファイルが生成され、撮影された画像が保存されます。

  • (venv) hitto@raspi4:~/test $ cat capture.py.back 
    from picamera2 import Picamera2
    import time
    
    def main():
        # Picamera2インスタンスの生成
        picam2 = Picamera2()
    
        # カメラの設定(デフォルト設定の場合)
        camera_config = picam2.create_preview_configuration()
        picam2.configure(camera_config)
    
        # カメラの起動
        picam2.start()
        print("カメラが起動しました。3秒後に写真を撮影します...")
        time.sleep(3)  # 少し待機
    
        # 写真の撮影
        image = picam2.capture_array()
    
        # 画像を保存
        import cv2  # OpenCVライブラリがある場合(無ければpip install opencv-python)
        cv2.imwrite("capture.jpg", image)
        print("写真を 'capture.jpg' に保存しました。")
    
        # カメラの停止
        picam2.stop()
    
    if __name__ == '__main__':
        main()
    (venv) hitto@raspi4:~/test $ cat capture.py
    from picamera2 import Picamera2
    import time
    import cv2  # OpenCVライブラリ
    
    def main():
        # Picamera2インスタンスの生成
        picam2 = Picamera2()
    
        # 静止画用の設定を作成して適用
        camera_config = picam2.create_still_configuration()
        picam2.configure(camera_config)
    
        # カメラの起動
        picam2.start()
        print("カメラが起動しました。3秒後に写真を撮影します...")
        time.sleep(3)  # 少し待機
    
        # 写真の撮影
        image = picam2.capture_array()
    
        # もし image が RGB 形式なら BGR に変換
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    
        # 画像を保存
        cv2.imwrite("capture.jpg", image)
        print("写真を 'capture.jpg' に保存しました。")
    
        # カメラの停止
        picam2.stop()
    
    if __name__ == '__main__':
        main()
    (venv) hitto@raspi4:~/test $ 

    rgb と bgrで苦戦した

    ← Go home