OpenCV で画像の読み書きを行なう際、JPEG に関して品質を指定できるはずなのに、そんなパラメータを渡す方法が存在しないような感じだなぁと思ってちょっと調べてみた。
普通に渡す方法があることをご存知の方は教えていただけると幸いです。
OpenCV の JPEG 保存
OpenCV とは言っても、全部が全部 OpenCV のプロジェクトが開発している訳ではなくって、下位のイメージファイル読み書き処理は、フォーマットごとに別のライブラリを使用しています。
そんなわけで、JPEG 関連はと調べてみると、標準の libjpeg を使用しているみたいです。
このライブラリなら品質パラメータを渡せたはず。
と思って、ちょっとソースコードを調べてみたところ、grfmt_jpeg.cpp の中で、
const int default_quality = 90;
などと固定の値が定義されていて、この数値をそのまま使用しているようですね。
ふうむ、これを変更するためには、上のレイヤで、パラメータを設定するようなインターフェースを新設しないと対応できないような感じです。
画像フォーマットに依存しない形でパラメータを設定できないといけないのでしょうから、固定文字列のキーとそれに対応するバリュー(値)の組み合わせを渡せるようなインターフェースとなるでしょうか。
debian etch でソース(0.9.7)をみているので、正式公開となった 1.0 だとこのあたりは改善されているのかな?
またひまのあるときに眺めてみることにしよう。
