Raspberry Piのカメラ入門|Pythonのpicamera2で写真・映像を撮る基本操作【2026年版】

プログラミング・電子工作






Raspberry Piのカメラ入門|Pythonのpicamera2で写真・映像を撮る基本操作【2026年版】|YOFUKASI AI




Raspberry Pi / Python

Raspberry Piのカメラ入門――Pythonのpicamera2で写真・映像を撮る基本。

検索したコードが動かない、それは「picamera」と「picamera2」を混同しているせいかもしれません。インストールから静止画撮影、よくあるエラーの対処法までをやさしく解説します。

YOFUKASI AI編集部 | 更新日:2026年8月18日 | 読了目安:約12分

Chapter 01 — Introduction

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初心者を対象にわかりやすく解説する。



Chapter 02 — Background

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_configurationcreate_still_configurationcreate_video_configuration)についての説明がまとまっている。

Chapter 03 — Mechanism

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ライブラリで、カメラモジュールを簡単に制御するためのツールであると紹介されており、物体検出のサンプルスクリプトを動かす手順が解説されている



Chapter 04 — Comparison

04picamera2・旧picamera・OpenCV連携の比較

カメラをPythonから扱う方法には、いくつかの選択肢がある。以下に整理する。

項目 A. picamera2 B. 旧picamera C. picamera2 + OpenCV
対応OS Bullseye以降で標準的 Bullseye以降は非対応とされる Bullseye以降(OpenCV別途必要)
向いている用途 写真・動画の基本的な撮影 古いプロジェクトの保守のみ 顔検出などの画像解析
学習コスト 低い(公式サンプル豊富) 情報は多いが現行環境では非推奨 中程度(OpenCVの知識も必要)

※新規にカメラを使い始める場合は、A案(picamera2)を選ぶのが基本方針となる。画像解析まで行いたい場合はC案への発展を検討する。

まずはA案でプレビューと静止画撮影に慣れ、必要に応じてC案のように画像解析へ発展させる、という順序が取り組みやすい。

Chapter 05 — Practice

05実践:写真を1枚撮影する5ステップ

ここでは「Raspberry Piにカメラモジュールを接続し、Pythonで写真を1枚撮影する」という基本的な流れを、順を追って説明する。

  1. STEP1. カメラモジュールを接続し、有効化する

    カメラモジュールをRaspberry Piのカメラ用コネクタに接続し、raspi-configの設定画面からカメラ機能を有効にする(近年のOSでは自動認識されることも多い)。

    例:接続後に再起動し、カメラが認識されているかを確認した。
  2. STEP2. picamera2がインストールされているか確認する

    ターミナルでpython3 -c "import picamera2"を実行し、エラーが出なければインストール済みと判断できる。入っていない場合は追加インストールする。

    例:sudo apt install -y python3-picamera2でインストールした。
  3. STEP3. Picamera2オブジェクトを作成する

    Pythonスクリプトの冒頭で、from picamera2 import Picamera2, Previewとしてから、Picamera2オブジェクトを作成する。

    例:picam2 = Picamera2()を記述した。
  4. STEP4. 静止画用の設定でカメラを起動する

    create_still_configuration()で設定を作り、configure()で適用してからstart()する。

    例:config = picam2.create_still_configuration(); picam2.configure(config); picam2.start()を記述した。
  5. STEP5. 少し待ってから撮影し、ファイルを確認する

    time.sleep(2)で少し待ってからcapture_file()で撮影し、指定したファイル名で保存されているか確認する。

    例:time.sleep(2); picam2.capture_file("test.jpg")を実行。最初は画像が真っ暗だったため確認したところ、start()の直後にsleepを入れずすぐ撮影していたことが原因だったと判明した(編集部想定シナリオ)。sleepを追加すると正常な明るさで撮影できた。

撮影した画像をOpenCVで解析する、といった発展的な使い方に興味がある場合は、公式ドキュメントのサンプルコードを参考にすると理解が深まる。

Chapter 06 — Pitfalls

06注意点・よくある誤解

!誤解1. 「picamera」と「picamera2」は同じもので書き方も共通だ

名前は似ているが、picamera2はpicameraの単なるアップデート版ではなく、内部の仕組みも書き方も大きく変わっている。検索して見つけたコードを試す前に、そのコードがpicamera2向けかどうかを確認する習慣が重要である。

!誤解2. start()した直後の画像はいつでも綺麗に撮れる

カメラが起動した直後は、明るさや色味の自動調整が完了していないことがある。start()の直後にすぐ撮影すると、暗すぎたり色がおかしかったりする画像になりやすいため、数秒待ってから撮影するのが基本になる。

!誤解3. プレビューはどんな接続方法でも同じように表示される

SSH接続などGUI画面のない環境でPreview.QTGLのようなGUIプレビューを使おうとすると、正しく表示されないことがある。GUIを使わない環境ではPreview.NULLなどを使うか、リモートデスクトップ接続でGUI環境から実行する必要がある。



Chapter 07 — FAQ

07FAQ

Q.picamera2とは何ですか。旧picameraとの違いは何ですか。
A.picamera2は、Raspberry Pi財団が提供する、カメラモジュールをPythonから制御するための新しいライブラリです。旧来のpicameraライブラリは、Raspberry Pi OSがBullseye以降に移行した際にサポート対象外となり、後継としてpicamera2の開発が進められました。現在新しくカメラを扱う場合は、picamera2を使うのが基本になります。

Q.picamera2を使うにはどんな準備が必要ですか。
A.カメラモジュールをRaspberry Piに正しく接続したうえで、Raspberry Pi OS(Bullseye以降)を使っていればpicamera2は標準でインストールされていることが多いです。含まれていない場合は、sudo apt install -y python3-picamera2 のようなコマンドで追加インストールできます。

Q.「ImportError: cannot import name ‘PiCamera’ from ‘picamera2’」というエラーが出るのはなぜですか。
A.このエラーは、旧picameraライブラリの書き方(PiCameraクラスを使う書き方)を、picamera2の環境でそのまま使おうとした場合に起こりやすいです。picamera2ではクラス名や書き方が変わっているため、公式サンプルコードの新しい書き方に合わせる必要があります。

Q.撮影した画像はどのように保存すればよいですか。
A.picamera2のcapture_file()メソッドを使うことで、指定したファイル名で画像を保存できます。例えばpicam2.capture_file(‘test.jpg’)と書くと、test.jpgという名前でJPEG画像が保存されます。numpy配列としてそのまま扱いたい場合はcapture_array()を使います。

Q.プレビュー画面が表示されない、または真っ黒になるのはなぜですか。
A.SSH接続などGUI画面のない環境からスクリプトを実行すると、Preview.QTGLのようなGUIプレビューは正しく表示できません。GUIを使わない場合はPreview.NULLやPreview.DRMを指定するか、VNCなどでデスクトップ環境に接続してから実行する必要があります。

Q.OpenCVと組み合わせて画像処理をすることはできますか。
A.できます。capture_array()で取得した画像はnumpy配列として扱えるため、OpenCVの関数にそのまま渡すことができます。顔検出などのサンプルは、Raspberry Pi公式のブログ記事でも紹介されています。画像処理を本格的に行いたい場合は、picamera2とOpenCVを組み合わせる構成が一般的です(編集部見解)。

参考文献

関連記事(内部リンク)

該当なし(本記事はRaspberry Pi・picamera2がテーマであり、内部リンクプールはArduino関連記事のみで構成されているため、無理な挿入は行っていません。)


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE