Raspberry Piのカメラ入門――Pythonのpicamera2で写真・映像を撮る基本。
検索したコードが動かない、それは「picamera」と「picamera2」を混同しているせいかもしれません。インストールから静止画撮影、よくあるエラーの対処法までをやさしく解説します。
目次
01なぜ「picamera」で検索したコードが動かないのか
結論から言えば、Raspberry Piのカメラモジュールを最近のOSでPythonから使う場合、必要なライブラリはpicamera2である。古い記事や書籍でよく見かけるfrom picamera import PiCameraという書き方のpicamera(2なし)は、現在のRaspberry Pi OSでは前提が異なっており、そのままコピーしても動かないことが多い。
実例として、picamera2をインストールした直後にサンプルコードを実行したところ、思わぬエラーに遭遇した記録がある。Pythonライブラリ(Rasberry Piカメラ操作):Picamera2(KIYO)では、python3-picamera2をインストールしてスクリプトを実行したところ「ImportError: cannot import name ‘PiCamera’ from ‘picamera2’」というエラーが発生したことが報告されている。旧picameraの書き方をそのまま持ち込んでしまうと、このような食い違いが起こりやすい。
編集部見解:カメラまわりのエラーは、検索して見つけたコードが「どちらのライブラリ向けか」を確認しないまま試してしまうことで起こりやすい。まずpicamera2の公式サンプルの書き方を基準にする習慣をつけておくと、混乱を避けやすいと考えられる。
― YOFUKASI AI編集部
この記事では、picamera2の基礎知識から、実際に写真を1枚撮影するまでの手順、そしてよくあるエラーとその対処法までを、Raspberry Pi初心者を対象にわかりやすく解説する。
02picamera2の基礎知識
picamera2は、Raspberry Pi財団が公式に提供している、カメラモジュールをPythonから制御するためのライブラリである。2022年にプレビュー版が公開され、現在では標準的なカメラ操作ライブラリとして位置づけられている。
picamera2が生まれた背景には、Raspberry Pi OSの世代交代がある。Raspberry Pi公式のブログでは、A preview release of the Picamera2 library(Raspberry Pi公式)において、Picamera2はプレビュー、静止画・動画の撮影、カメラパラメータの取得・設定に対応しており、フルサイズの静止画をJPEGやPNGとして撮影することも、numpy配列として画像解析用に取得することもできると説明されている。
用語の整理
- picamera2:現在推奨されているカメラ制御ライブラリ。Bullseye以降のRaspberry Pi OSで利用できる。
- picamera(旧):以前から使われてきたライブラリ。Bullseye以降は非対応とされ、新規に使うことは推奨されない。
- プレビュー(preview):カメラが今映している映像を画面上に表示する機能。
picamera2の詳しい仕様は、公式マニュアルにまとめられている。The Picamera2 Library Guide(Raspberry Pi公式マニュアル)には、プレビュー用・静止画用・動画用それぞれの設定を作る関数(create_preview_configuration・create_still_configuration・create_video_configuration)についての説明がまとまっている。
03カメラ撮影の仕組みと技術的背景
picamera2でカメラを扱う基本の流れは、次の3ステップに整理できる。
- Picamera2オブジェクトを作成する
- 用途(プレビュー用・静止画用など)に応じた設定(configuration)を作り、configure()で適用する
- start()でカメラを起動し、capture_file()やcapture_array()で撮影する
最小構成のコードは、次のようになる。
from picamera2 import Picamera2, Preview
import time
picam2 = Picamera2()
camera_config = picam2.create_still_configuration(
main={"size": (1920, 1080)}
)
picam2.configure(camera_config)
picam2.start_preview(Preview.QTGL)
picam2.start()
time.sleep(2) # カメラが安定するまで少し待つ
picam2.capture_file("test.jpg")
このコード例は、実際に写真撮影の手順として紹介されているものと同様の構成である。How To Use Picamera2 to Take Photos With Raspberry Pi(Tom’s Hardware)では、Picamera2とPreviewをインポートし、静止画用の設定を作ってプレビューを開始したあと、capture_fileで撮影するという流れが紹介されている。
start()の直後にすぐ撮影すると、カメラの露出やホワイトバランスの調整が間に合わず、暗すぎる・色がおかしい画像になることがある。上のコード例のように、start()のあとに1〜2秒程度のtime.sleep()を入れておくと、安定した画像が撮影しやすくなる。
より発展的な例として、AIカメラを使った物体検出のように、撮影した画像をそのまま解析処理に渡す使い方も広がっている。Raspberry Pi AI Cameraのセットアップ手順(Qiita)では、Picamera2がRaspberry Pi財団の提供する新しいPythonライブラリで、カメラモジュールを簡単に制御するためのツールであると紹介されており、物体検出のサンプルスクリプトを動かす手順が解説されている。
04picamera2・旧picamera・OpenCV連携の比較
カメラをPythonから扱う方法には、いくつかの選択肢がある。以下に整理する。
| 項目 | A. picamera2 | B. 旧picamera | C. picamera2 + OpenCV |
|---|---|---|---|
| 対応OS | Bullseye以降で標準的 | Bullseye以降は非対応とされる | Bullseye以降(OpenCV別途必要) |
| 向いている用途 | 写真・動画の基本的な撮影 | 古いプロジェクトの保守のみ | 顔検出などの画像解析 |
| 学習コスト | 低い(公式サンプル豊富) | 情報は多いが現行環境では非推奨 | 中程度(OpenCVの知識も必要) |
※新規にカメラを使い始める場合は、A案(picamera2)を選ぶのが基本方針となる。画像解析まで行いたい場合はC案への発展を検討する。
まずはA案でプレビューと静止画撮影に慣れ、必要に応じてC案のように画像解析へ発展させる、という順序が取り組みやすい。
05実践:写真を1枚撮影する5ステップ
ここでは「Raspberry Piにカメラモジュールを接続し、Pythonで写真を1枚撮影する」という基本的な流れを、順を追って説明する。
-
STEP1. カメラモジュールを接続し、有効化する
カメラモジュールをRaspberry Piのカメラ用コネクタに接続し、raspi-configの設定画面からカメラ機能を有効にする(近年のOSでは自動認識されることも多い)。
例:接続後に再起動し、カメラが認識されているかを確認した。 -
STEP2. picamera2がインストールされているか確認する
ターミナルで
python3 -c "import picamera2"を実行し、エラーが出なければインストール済みと判断できる。入っていない場合は追加インストールする。例:sudo apt install -y python3-picamera2でインストールした。 -
STEP3. Picamera2オブジェクトを作成する
Pythonスクリプトの冒頭で、
from picamera2 import Picamera2, Previewとしてから、Picamera2オブジェクトを作成する。例:picam2 = Picamera2()を記述した。 -
STEP4. 静止画用の設定でカメラを起動する
create_still_configuration()で設定を作り、configure()で適用してからstart()する。例:config = picam2.create_still_configuration(); picam2.configure(config); picam2.start()を記述した。 -
STEP5. 少し待ってから撮影し、ファイルを確認する
time.sleep(2)で少し待ってからcapture_file()で撮影し、指定したファイル名で保存されているか確認する。例:time.sleep(2); picam2.capture_file("test.jpg")を実行。最初は画像が真っ暗だったため確認したところ、start()の直後にsleepを入れずすぐ撮影していたことが原因だったと判明した(編集部想定シナリオ)。sleepを追加すると正常な明るさで撮影できた。
撮影した画像をOpenCVで解析する、といった発展的な使い方に興味がある場合は、公式ドキュメントのサンプルコードを参考にすると理解が深まる。
06注意点・よくある誤解
名前は似ているが、picamera2はpicameraの単なるアップデート版ではなく、内部の仕組みも書き方も大きく変わっている。検索して見つけたコードを試す前に、そのコードがpicamera2向けかどうかを確認する習慣が重要である。
カメラが起動した直後は、明るさや色味の自動調整が完了していないことがある。start()の直後にすぐ撮影すると、暗すぎたり色がおかしかったりする画像になりやすいため、数秒待ってから撮影するのが基本になる。
SSH接続などGUI画面のない環境でPreview.QTGLのようなGUIプレビューを使おうとすると、正しく表示されないことがある。GUIを使わない環境ではPreview.NULLなどを使うか、リモートデスクトップ接続でGUI環境から実行する必要がある。
07FAQ
参考文献
- Raspberry Pi「The Picamera2 Library Guide」Raspberry Pi Documentation. https://datasheets.raspberrypi.com/camera/picamera2-manual.pdf
- Raspberry Pi「A preview release of the Picamera2 library」Raspberry Pi公式ニュース, 2022年. https://www.raspberrypi.com/news/a-preview-release-of-the-picamera2-library/
- KIYO「Pythonライブラリ(Rasberry Piカメラ操作):Picamera2」note, 2023年. https://note.com/kiyo_ai_note/n/nf45b058afdfa
- Tom’s Hardware「How To Use Picamera2 to Take Photos With Raspberry Pi」Tom’s Hardware, 2022年. https://www.tomshardware.com/how-to/use-picamera2-take-photos-with-raspberry-pi
- daiki0321「Raspberry Pi AI Cameraのセットアップ手順」Qiita, 2025年. https://qiita.com/daiki0321/items/4223611adb453d6c7aa2
- 本文中の具体的な原因特定エピソードは、断りのない限り編集部想定シナリオに基づく想定であり、実測データではありません。
関連記事(内部リンク)
該当なし(本記事はRaspberry Pi・picamera2がテーマであり、内部リンクプールはArduino関連記事のみで構成されているため、無理な挿入は行っていません。)
コメント