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」を使い、簡単なスクリプトで写真を撮影する方法を紹介します。
必要なもの
また、Pythonの仮想環境を利用することをおすすめします。記事内では、venv を利用した環境構築例も記載します。
1. ハードウェアのセットアップ
Raspberry Pi本体の専用CSIポートに、High Quality Cameraのフラットケーブルを差し込みます。ケーブルの向きに注意し、接続が確実であることを確認してください。
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
???
仮想環境内で以下のコマンドを実行します:
pip install picamera2
※ インストール中に依存パッケージ(python-prctlなど)のビルドエラーが出た場合は、システム側の libcap-dev や python3-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()
スクリプトの実行方法
python3 capture.py
(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で苦戦した

