2017年10月26日木曜日

OpenCV 3.3.1 で変更されたdnnモジュールのAPI (Changed API of dnn module in OpenCV 3.3.1)

自動着色のサンプル結果 本文と関係なし

はじめに

3.3.1のdnnモジュールのサンプルのソースを眺めていたとこを、いくつかのサンプルで冗長な記述があり、短縮で切るのではないかとAPIをみていたら3.3の時から若干変更されているAPIをみつけた。




3.3の説明
3.3.1の説明

見比べると分かるが、最後の bool crop = trueが追加されている。

説明

blobFromImage は、OpenCV の Mat 型を入力とし、dnn モジュールの入力として使用できるように型の変換を行うAPIである。

3.3では、本来の型変換に加えて、

  • 値のスケールを変換する機能、
  • 入力画像のサイズを指定のサイズに変更する機能
  • 入力画像の値から平均値に相当する値を減算する機能
  • 入力画像のRchとBchを入れ替える機能
が提供されていた。
3.3の説明では、縦横の比が同じになるように、中心からCropされていた

( input image is resized so one side after resize is equal to corresponing dimension in size and another one is equal or larger. Then, crop from the center is performed.)

3.3.1では、デフォルトでは、Cropであるが、最後のパラメータをfalseにすることにより、入力画像の大きさを強制的に指定サイズに変換することができる。

それゆえ、いくつかのサンプルでは、事前にresizeを使用して入力画像のサイズをモデルの入力画像の大きさに変換を行うコードを使用しているが、3.3.1では、入力画像をそのままblobFromImage() に渡し、最後のパラメータをfalseにすればよい。

uchar から double に型変換を行い、255で割ることでスケールを0-1に変換する処理を使用しているサンプルや
平均値を Mat から減算しているサンプルなどもあるが、これらはすべて blobFromImage においてパラメータを指定するだけでよい。

以上

0 件のコメント:

コメントを投稿