【電子工作】OV5647カメラモジュールを使ってlibcamera-stillで写真を撮ってみる(Raspberry Pi 4で遊ぼう日記 その20)

投稿日:2022年7月9日
最終更新日:2022年7月9日

libcamera-stillを使って写真を撮ってみる

前回、OV5647というOmniVision社製イメージセンサーを搭載した以下のカメラモジュールをラズパイに接続し、libcamera-jpegで写真を撮ってみた。

今回はlibcamera-stillというコマンドで写真を撮ってみる。libcamera-stillではjpegだけでなくbmpやpngなどのファイル形式で画像を保存することができたり、イメージセンサーのRAW画像データを取得することができたりするので、色々と試してみる。

なお、今回もSSH接続はせずに、ラズパイにモニター、キーボード、マウスを接続してGUI上から操作を行った。

SSH越しに接続して操作する場合は、操作するPC側でXmingなどのXサーバーを起動しているとエラーが出るので、Xサーバーを終了するか-nオプションをつけてlibcameraを実行する。詳しくは以下の記事を参照↓

Xサーバ(Xming)を起動したPCでSSH越しにRaspberry Piに接続してlibcameraを使ったら「failed to import fd 19」というエラーが出た

なお、今回も前回同様にラズベリーパイの公式ドキュメントの情報を参照しながら進めた。

https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-still

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Bullseye)

カメラモジュール(OV5647)

 

ファイル形式を指定して画像やバイナリデータを保存する

libcamera-stillでは-e(–encoding)オプションをつけることによって、jpegの他にもbmp、png形式が画像ファイルを保存できる。

libcamera-still -e png -o cameratest.png
libcamera-still -e bmp -o cameratest.bmp

もちろんlibcamera-jpegと同様に画像サイズの指定や、露出補正なども可能。例えば以下のように指定が可能。

libcamera-still -e png -o --ev 0.5 camerastill-bright.png --width 640 --height 480

このコマンドで実際にラズベリーパイで画像サイズオプション&露出補正を使って保存してみたpng画像が以下のもの。

また、エンコードをせずにRGB、YUVピクセルのバイナリデータを保存することもできる。

libcamera-still -e rgb -o cameratest.data
libcamera-still -e yuv420 -o cameratest.data

 

Raw画像データを保存する

libcamera-stillのもう一つの特徴として、-rオプションをつけることでイメーセンサーでつくられたRaw画像データを直接保存することができる。

RAW画像データはイメージセンサーで取得した情報がそのまま保存されるのでファイルサイズは大きくなるが、情報量が多いので後から画像加工したり撮影情報を使って何か処理したりする場合には便利。

たとえば以下のように写真を撮ると、camerastill-raw.jpgというjpegファイルと一緒に、camerastill-raw.dng というAdobe Digital Negativeフォーマットのファイルが保存される。

libcamera-still -r -o camerastill-raw.jpg

ちなみにdngファイルは画像編集ソフトによってはそのまま開けることもあるが、開けないソフトも多いので注意。

 

Raw画像データの中身を見てみる

RawデータにはExifというフォーマットで色々なメタデータが含まれているので、Exifのメタデータの内容を確認できるExifToolで今回保存したdngファイルの情報を確認してみる。ExifToolの使い方は以下を参照。

ExifToolでメディアデータのメタデータを表示させてみる(Windows 10)

-rオプションをつけて保存したcamerastill-raw.dngを開いてみたのが以下の画像。Black LevelやWhite Level、Color Matrixなど色々な情報が含まれている。

比較のために、同時に保存したjpegファイルのメタデータも見てみる。エンコードして圧縮されたjpegファイルでは色々なメタデータが削ぎ落とされていることがわかる。

ざっくりとcamera-stillの使い方はわかった。次回も引き続きlibcameraを使って、libcamera-vidというコマンドで動画を撮影してみたいと思う。

 

日記まとめ

ラズパイで遊んでみた軌跡を以下でまとめてます。

【電子工作】Raspberry Pi 4で遊ぼう日記 まとめ


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください