Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。
久しぶりにカメラモジュールやWEBカメラをラズパイに繋いで試したところ、だいぶ以前とは変更になっていて迷います。
試行錯誤した結果、分かった事実を中心に列挙してみます。
以前からラズパイを使っている人で、継続的にカメラモジュールを触っていないと混乱してきますね。
ちょうど2024年9月30日に「Raspberry Pi AIカメラ」が発表されました。これまでのモデルと同じソニーカメラ搭載です。なんと!カメラモジュールのみで画像認識が出来る優れもので、非エンジニアとしては助かります。
AIカメラは産業用ラズパイで試してみました。目次から記事後半へどうぞ。
そんな新しいAIカメラもRaspberry Piに繋ぐ同じカメラモジュールなので、お復習いとしてこれまでのモデル変遷からサクッとまとめてみました。
OS別の理解
コマンドで実行するsudo raspi-configメニューに、bullseye以前はcameraの有効/無効オプションがありました。現行だとLegacy cameraしかありません。
以前はそのままCameraという項目があったのですが、OSによって表示を切り替えているみたいです。

そして、現行だとLegacy Cameraは有効にしません。
有効にするとconfig.txtを書き換えます。(start_x=1が追記され、camera_auto_detect=1を削除される)
Legacy cameraモードはbullseye以前の古いカメラモジュールでraspistillコマンドを使うためのようで、サポートはもうすぐ切れるため、今後はなくなるようです。
Pi 4やPi 5ではCSIケーブルを繋げばそのまま使えます。むしろLegacyモードは無効にしておくべきですね。
Pi 5では公式ドキュメント通り
現行のモデルなら、公式ドキュメント通りで全く問題ありません。
Pi 4も含め、公式カメラモジュールならCSIケーブルを繋ぐだけで動作します。
サードパーティー製のカメラモジュールだけは、config.txtを編集しないとなりません。
camera_auto_detect=1は公式カメラモジュールにだけ適用されるとありました。
モデルを指定する

ハードウェアの仕様:https://www.raspberrypi.com/documentation/accessories/camera.html#hardware-specification
各カメラモジュールのイメージセンサー名を指定することで動作します。
公式カメラモジュールでも設定していて問題ありません。サードパーティー製を接続して自動で認識しないなら、イメージセンサー名はどれかに当てはまります。
サードパーティ製だとIMX290、IMX327、IMX378、IMX519、OV9281があります。
新しいAIカメラはIMX500とあったので、新たにimx500を追記するのでしょうか。いや、公式カメラだから自動認識で何も記載しなくて良いでしょう。
追記する場所は、[all]セクションにあたる最下部でOKです。
dtoverlay=imx219
名称を指定すると同時に、自動認識を無効の0にしろとあります。(allより手前に記載あり)
コメントアウトしても認識しない場合、明示的にcamera_auto_detect=0を追記します。
#コメントアウトまたはcamera_auto_detect=0
#camera_auto_detect=1
camera_auto_detect=0
※この自動認識はRaspberry Pi公式カメラモジュールに対応しています。
逆に公式カメラモジュールであれば、自動で認識できたのか、CSIケーブルを繋ぐだけでconfig.txtを触らなくても大丈夫でした。(Pi 4の場合)
Raspberry Pi 公式 カメラモジュール【Raspberry Pi Camera V3】 (可視光 [SC0872])
config.txtの場所違い
bookwormになってなら、config.txtの場所が変わっています。 つい、忘れてしまいますね。まだ慣れません。
bookworm → /boot/firmware/config.txt
bullseye以前 → /boot/config.txt
カメラモジュールの撮影アプリ
Raspberry Piとカメラモジュールは少しややこしい経緯があります。
Raspberry Pi OS Bookworm は、カメラ キャプチャ アプリケーションの名前を libcamera- から rpicam- に変更しました。Bookworm より前の Raspberry Pi OS バージョンでは、libcamera-* という名前が引き続き使用されます。
busterまでは、raspistillコマンドを使っていました。
raspistillの頃
bullseye以降は、libcameraコマンドとPythonではPicamera2モジュールを使うことになりました。 ※これら2つはbullseye以降ならプリインストールされています。
もしPi 3であれば、更にGlamor(ハードウェアアクセラレータ)を有効にしないとなりませんでした。Glamorはプレビュー表示で使うためです。
OSがbookworm以降はまた違います。
libcameraコマンドがrpicamコマンドになっています。もしもPi5で使うなら何も迷うことないでしょう。 以前のラズパイモデルやOSでカメラモジュールを扱う際に気を付けないとなりません。
記事執筆時点では、セットアップの方法や撮影するコマンドが、PiモデルやOSの組み合わせによって変わっています。
ややザックリとご説明すると次のような関係になります。
| Pi3系(buster) | raspistillコマンド + Glomor有効 |
| Pi4系(bullseye) | libcameraコマンド |
| Pi5系(bookworm) | rpicamコマンド |
それぞれのコマンドはプリインストールされています。
他にもPython言語で扱うにはPicamera2ライブラリが使えます。OSがbullseye以上であれば最初からインストール済みです。
rpicam(libcamera)コマンド
撮影するアプリの名前がlibcameraからrpicamに変更になっているので、libcameraコマンドを知っているなら、それほど迷わずに使えると思います。
次のようなコマンドも、基本はどちらでも同じで名称が異なるだけになっています。
ファイル名test.jpg、プレビューウィンドウ2秒表示、横800、縦600の解像度を指定したコマンドです。
libcamera-jpeg -o test.jpg -t 2000 --width 800 --height 600
rpicam-jpeg -o test.jpg -t 2000 --width 800 --height 600
動作確認で使うコマンド: プレビュー表示時間は無限(=0)なので、Ctrl + C で終了か、プレビューウィンドウを閉じると終了します。
rpicam-hello -t 0
主なコマンド
- rpicam-hello:カメラのプレビューストリーム
- rpicam-jpeg:静止画を撮影する(プレビューウィンドウ有)
- rpicam-still:オリジナルのraspistillの多くの機能をエミュレートできる
- rpicam-vid:動画を撮影する
- rpicam-raw:センサーから直接生(未処理のバイエル)フレームをキャプチャする
- rpicam-detect:デフォルトではビルドされていません。TensorFlow Liteをインストールしていれば構築できます。特定のオブジェクトが検出されたときにJPEG画像をキャプチャできるます。
■Pi 5は8GBモデルがオススメ
rpicamはラズパイ特化アプリ
libcameraが先にオープンソースとしてあって、それをラズパイ用に独自機能を追加したカスタムがrpicamです。ライセンスは異なりますがオープンソースです。
ラズパイでは今後rpicamに統一されていくので、最新のOSであればrpicamで覚えておけば良さそうです。 2018~2019年にraspistillコマンドで慣れてしまった身としては、コロコロと変わってしまい混乱しますね。
libcameraコマンドもまだ使えます。いずれこれもラズパイではサポートしなくなります。
加えて、raspistillもエミュレート利用できるようになっています。 古い記事で使われているraspistillコマンドオプションは、rpicam-stillで試してみましょう。
公式ドキュメントで調べても、つい癖でraspistillと叩いていたのがやっと慣れました。 古いV1やV2のカメラモジュールを未だに所持しているので、なんとか使い回したいですね。
産業用ラズベリーパイでもAIカメラ+hailo
2025/01/18追記
ComputeModule 5とAIカメラモジュール、
更にAIアクセラレーターhailoを試した記事を寄稿しました。
こちらもぜひご覧ください。
寄稿記事
産業用ラズパイで試すAIカメラとAIアクセラレータHailo – PiLink








