v4l2-ctl --list-devices
の結果から読み解くハードウェア構成
Raspberry Pi 5 でカメラを使用する際、まず確認しておきたいのが、接続されている映像デバイスの情報です。
その確認に使用されるのが、次のコマンドです。
$ v4l2-ctl --list-devices
このコマンドを実行すると、接続されている映像デバイスが一覧で表示されます。
表示される情報は、接続されたカメラそのものだけではなく、Raspberry Pi の内部処理に関わる仮想デバイスも含まれており、はじめてこの情報を目にする方には少し分かりづらく感じるかもしれません。
この記事では、よく表示される以下の3つの項目について、それぞれが意味するものを丁寧に解説いたします。
1. pispbe (platform:1000880000.pisp_be)
こちらは PiSP (Pi Image Signal Processor) のバックエンド処理に関する仮想デバイスです。
Raspberry Pi 5 から採用された新しい画像処理パイプラインに関連しており、カメラから取得した画像に対して、色補正・ノイズ除去・スケーリングなどの画像処理を行う部分になります。
このセクションに表示される /dev/video20
〜 /dev/video35
などのデバイスは、ユーザーが直接使用する目的ではなく、Pi内部での画像処理の中継地点として使われています。OpenCVなどからこれらを使うことは基本的にありません。
2. rp1-cfe (platform:1f00110000.csi)
こちらが、**実際に接続されたカメラ(Camera Serial Interface: CSI)**に対応するデバイスです。
Raspberry Pi カメラモジュール(例:Camera Module 2や3)が接続されている場合、このセクションに /dev/video0
〜 /dev/video7
などのデバイスが表示されます。
実際に OpenCV などのライブラリで映像を取得する場合、この中のいずれか(多くの場合 /dev/video0
)が使用されることになります。
この rp1-cfe
という名前は、Raspberry Pi 5 の SoC 上にある カメラフロントエンド(Camera Front-End) に関連しており、画像センサからのデータ受け取りや初期処理を担当しています。
3. rpi-hevc-dec (platform:rpi-hevc-dec)
こちらはカメラとは直接関係のないデバイスですが、映像関係として表示されることがあります。
これは HEVC(H.265)動画のデコード処理をハードウェアで行うためのデコーダーです。
動画ファイルの再生時や、リアルタイムストリーミングの際に使われることがありますが、カメラからの映像取得には使いません。
/dev/video19
などに割り当てられる場合がありますが、OpenCVで VideoCapture(19)
のように指定しても映像は取得できませんので、混同しないよう注意が必要です。
まとめ
デバイス名 | 主な役割 | OpenCVなどで使用可能か |
---|---|---|
pispbe | 画像処理パイプラインの中継 | × |
rp1-cfe | 実カメラ(CSI接続)の入力 | ○(/dev/video0 など) |
rpi-hevc-dec | H.265動画デコーダ | × |
おわりに
Raspberry Pi 5 ではカメラ関連の構造が刷新され、旧来のカメラ制御コマンドでは認識できないケースも増えています。そのため、どの /dev/video*
が実際に使えるのかを見極めるには、こうしたデバイスの意味を把握しておくことが非常に重要です。
これらを理解することで、不要なエラーや試行錯誤を避け、スムーズなカメラ開発・映像処理を行うことが可能になります。