Raspberry Pi のカメラモジュールの最新情報 (2020-05-01)
この記事を書いてから7年近く経過して、今日調べてみると13万ページビューにもなっています。更新していなくて申し訳ないです。 その間に Camera Module v2 (8MP) が発売され、さらに最近 High Quality Camera(12.33MP) が発売されました。 raspistill と raspivid のコマンドは今でも使用できるようですが、オプションなどが追加されています。 新しい情報は公式サイトのCamera Module または MagPi Camera Guide を参照して下さい。
Raspberry Pi のカメラモジュールの使い方 (2013/07/26, 2013/12/01)
5月22日頃に発注したラズベリーパイ専用のカメラモジュールが届きました。 今回は RSオンライン から購入しました。 当初は発送は9月中旬になる予定でしたが、思いもよらず 2か月早く届きました。
https://elinux.org/Rpi_Camera_Moduleル によると、カメラのスペックは以下のようです。
- センサー: OmniVision OV5647 Color CMOS QSXGA (500万画素)
- センサーサイズ: 3.67 x 2.74 mm
- ピクセル: 2592 x 1944
- ピクセルサイズ: 1.4 x 1.4 um
- レンズ: f=3.6 mm, f/2.9
- 視野角: 54 x 41 度
- 視野: 2m の距離で 2.0 x 1.33 m
- 35mmフルサイズ換算: 35 mm
- 固定焦点: 1 m から無限遠 (レンズを固定している接着剤を除くと変更可)
- ビデオ: 1080p/30fps, H.264 (AVC)
raspi-config の設定変更
カメラモジュールは2013年5月末以降の状態にアップデートした Raspbian で使うことができます。今回は配布サイトからダウンロードした 2013-05-25-wheezy-raspbian.zip で新たにブート用のSDカードを作成 (2013-05-25-wheezy-raspbianのインストール) して、raspi-config コマンドでカメラを有効に設定しました。
カメラを有効にする設定
raspi-configの最初の画面の「5 Enable Camera」を選択して、接続したカメラモジュールを「Enable」にします。
カメラをケースに組み込む
今回は最近使っていなかった Raspberry Pi Type B の Rev.1(256MB)のボード使いました。 カメラ基板をRaspberry Pi に接続して撮影を試しましたが、カメラがリボンケーブルの先にあって「ぷらぷら」と安定しません。 何らかの固定をしないとうまく撮影できないため、Raspberry Pi が梱包されてくるピンク色のケースを加工して、Raspberry Pi とカメラモジュールを組み込んで固定するケースとして利用しました。 Raspberry Pi が梱包されていたケースは見かけによらず割れやすいため、熱したドライバーで、レンズ、固定用の穴、ケーブル類を通す穴を開けました。 カメラは糸で固定しています。 「一体型の無線撮影サーバ」という何か危険な香りのするものが出来上がりました。外に持ち出したりしないほうがいいでしょうね。
Rasberry Pi とカメラモジュールを合わせた消費電力は 800mA で、電力供給が十分でないと問題が発生するようです。
私が Raspberry Pi に使用している電源は 2A の USB ACアダプタ ですが、これまで何も問題なく安定して動作しています。 カメラモジュールと無線 LAN アダプタ(GW-USValue-EZ) を接続した場合の消費電力は、約4-5W (ワットチェッカーによる実測値) で、実際に 800mA から 1A 程度の電流が使われています。 ポリヒューズが使われていて電圧的には不利な Rev.1(256MB) のボードですが、カメラを接続しても安定に動作しています。 あまり空気の流れない上記のケースではけっこう熱くなりますが、CPUの温度は数時間通電していても以下のように51 - 54℃程度で、仕様上は問題ない温度です。
$ /opt/vc/bin/vcgencmd measure_temp temp=54.1'C
カメラ用コマンド
カメラモジュールを使うため、Raspberry Pi には3つのコマンドが用意されています。普通のデジタルカメラのように静止画を撮影する raspistill コマンド、デジタルビデオとなる raspivid コマンド、ファイルの圧縮エンコードをしない静止画撮影用の raspiyuv コマンドです。デジタルカメラとして多くの機能を持っていますが、コマンドのオプションとして指定する必要があるため、コマンドのヘルプだけでは多機能すぎて分かり難いため、整理してみました。
コマンドの実体は /opt/vc/bin/ 以下にあります。
/opt/vc/bin $ ls -lt total 364 -rwxr-xr-x 1 root root 59825 Jun 19 19:08 edidparser -rwxr-xr-x 1 root root 44483 Jun 19 19:08 raspistill -rwxr-xr-x 1 root root 40243 Jun 19 19:08 raspivid -rwxr-xr-x 1 root root 38070 Jun 19 19:08 raspiyuv -rwxr-xr-x 1 root root 44950 Jun 19 19:08 tvservice -rwxr-xr-x 1 root root 62584 Jun 19 19:08 vcdbg -rwxr-xr-x 1 root root 15054 Jun 19 19:08 vcgencmd -rwxr-xr-x 1 root root 55013 Jun 19 19:08 vchiq_test
これらのコマンドのソースは github で公開 されています。
raspistill
デジタルカメラとして静止画を撮影するコマンドです。コマンドラインで 「 raspistill -o photo.jpg 」のように使用します。
-?, --help : ヘルプの表示 -w, --width : 画像の幅の指定 (サイズ) -h, --height : 画像の高さの指定 (サイズ) -q, --quality : jpeg 品質を設定 (0 - 100) -r, --raw : jpeg メタデータに Bayer 配列データを追加する -o, --output : 出力ファイル名 (標準出力の場合は '-o -'). 指定しなければ何も保存されない -v, --verbose : 詳細情報の表示 -t, --timeout : 撮影までの時間をミリ秒単位で指定。指定しない場合は5秒。 -th, --thumb : サムネイルパラメータを設定 (x:y:quality) -d, --demo : デモモードを実行、撮影しない。 -e, --encoding : 出力ファイルのエンコード方法の指定 (jpg, bmp, gif, png) -x, --exif : EXIFタグの指定 ('key=value'の形式) -tl, --timelapse : こま撮りモード(ミリ秒で指定した間隔で連続撮影) -fp, --fullpreview:撮影する写真とモニターに映るプレビュー画面を同じサイズ (最大解像度 2592x1944)にする。 画面更新が最大15fpsまで遅くなる。(2013/12/01追加)
raspivid
ビデオ出力を表示するコマンド。指定したビットレイトで H264 形式で録画できます。
-?, --help : ヘルプの表示 -w, --width : 画像の幅の指定 (サイズ、デフォルトは 1920) -h, --height : 画像の高さの指定 (サイズ、デフォルトは 1080) -b, --bitrate : ビットレイトの設定 (例. 10MBits/s は -b 10000000) -o, --output : 出力ファイル名 (標準出力の場合は '-o -') -v, --verbose : 詳細情報の表示。 -t, --timeout : 撮影時間をミリ秒単位で指定。指定しない場合は5秒。0 は無効化。 -d, --demo : デモモードを実行、撮影しない。 -fps, --framerate : フレーム/秒を指定 -e, --penc : エンコード後にプレビュー画像を表示(圧縮の効果を表示) -g, --intra : 内部リフレッシュ期間を指定 (key frame rate/GoP size)
raspiyuv
ファイルを圧縮しない静止画撮影用のコマンドです。
-?, --help : ヘルプの表示 -w, --width : 画像の幅の指定 -h, --height : 画像の高さの指定 -o, --output : 出力ファイル名 (標準出力の場合は '-o -'). 指定しなければ保存されない -v, --verbose : 詳細情報の表示 -t, --timeout : 撮影までの時間をミリ秒単位で指定。指定しない場合は5秒。
各コマンド共通のオプション
以下のオプションは raspistill、raspivid、raspiyuv のコマンドで共通に使えます。 あまりはっきり効果がわからないものもありますが、色々試してみましょう。
プレビューパラメータ
Raspberry Piをディスプレイに接続していると、画面にプレビューが表示されますが、位置や大きさの指定ができます。
-p, --preview : プレビューウィンドウの設定 <'x,y,w,h'> -f, --fullscreen : フルスクリーン -op, --opacity : プレビューウィンドウの不透明度 (0-255) -n, --nopreview : プレビューウィンドウを表示しない
イメージパラメータ
撮影条件に関するオプションです。普通のカメラと似たような設定ができます。
-sh, --sharpness : シャープネス (-100 to 100) -co, --contrast : コントラスト (-100 to 100) -br, --brightness : ブライトネス (0 to 100) -sa, --saturation : サチュレーション (-100 to 100) -ISO, --ISO : ISO の設定 -vs, --vstab : Turn on video stablisation -ev, --ev : 露出補正 -ex, --exposure : 露出モードの設定 -awb, --awb : ホワイトバランスの設定 -ifx, --imxfx : 画像効果の設定 -cfx, --colfx : Set colour effect (U:V) -mm, --metering : 測光モードの設定 -rot, --rotation : 画像の回転 (0-359) -hf, --hflip : 水平反転 -vf, --vflip : 垂直反転
露出モード ( -ex )
モード | 意味 |
---|---|
off | オフ |
auto | 自動 |
night | ナイト |
nightpreview | ナイトプレビュー |
backlight | 逆光 |
spotlight | スポットライト |
sports | スポーツ |
snow | スノー |
beach | ビーチ |
verylong | 長時間 |
fixedfps | ? |
antishake | ぶれ防止 |
fireworks | 花火 |
オートホワイトバランスモード ( -awb )
モード | 意味 |
---|---|
off | オフ |
auto | 自動 |
sun | 晴天 |
cloud | くもり |
shade | 日陰 |
tungsten | タングステンタイプ |
fluorescent | 蛍光灯 |
incandescent | 白熱電球 |
flash | フラッシュ |
horizon | 日没光 |
画像効果モード ( -ifx )
モード | 意味 |
---|---|
none | 無し |
negative | 反転 |
solarise | 日の出 |
sketch | スケッチ |
denoise | ノイズ除去 |
emboss | エンボス |
oilpaint | 油彩 |
hatch | ハッチング |
gpen | Gペン |
pastel | パステル |
watercolour | 水彩 |
film | フィルム |
blur | ぼやけ |
saturation | 飽和 |
colourswap | 色変更 |
washedout | ウォッシュアウト |
posterise | ポスタリゼーション(階調変更) |
colourpoint | カラーポイント |
colourbalance | カラーバランス |
cartoon | アニメ絵 |
測光モード ( -mm )
モード | 意味 |
---|---|
average | 平均 |
spot | スポット |
backlit | 逆光 |
matrix | 多分割 |
撮影例
リビングの片隅に Raspberry Pi を置いて、バッチファイルで色々なモードで撮影してみました。 普通の部屋の照明 (LED) だけです。大きい画像 (2592 x 1944) のサイズを縮小すると、各モードの特徴がわからなくなってしまうので、最初から480x360のサイズで撮影して、未加工でこのページに貼っています。
$ raspistill -w 480 -h 360 -n -o normal2.jpg
$ raspistill -w 480 -h 360 -n -ifx pastel -o pastel2.jpg
$ raspistill -w 480 -h 360 -n -ifx washedout -o washedout2.jpg
$ raspistill -w 480 -h 360 -n -ifx oilpaint -o oilpaint2.jpg
$ raspistill -w 480 -h 360 -n -ifx sketch -o sketch2.jpg
$ raspistill -w 480 -h 360 -n -ifx cartoon -o cartoon2.jpg
$ raspistill -w 480 -h 360 -n -ifx emboss -o emboss2.jpg
$ raspistill -w 480 -h 360 -n -ifx posterise -o posterise2.jpg
$ raspistill -w 480 -h 360 -n -ifx gpen -o gpen2.jpg
超小型 PC ボードの Raspberry Pi と専用カメラモジュールの両方で 6000円程度で購入できます。 動画の解像度も画質もかなり良く、これから世界中で色々な使い方が発明されていくんでしょうね。