MSER (OpenCV) detectRegions を使用する Python プログラムを C++ に移植しています。C++ プログラムで検出された MSER 領域の数が Python のものよりも大幅に少ないという奇妙な動作に気付きました。両方の入力として同じ画像を使用し、detectRegions を呼び出す前に同じ前処理手順を実行しています。特定のサンプル イメージでは、Python プログラムによって検出された MSER 領域の数は 6620 でしたが、C++ に移植した後は 1164 しか得られません。
私の最後での唯一の違いは、Python では x64 バージョンの cv2.pyd (\build\python\2.7\x64) を使用し、C++ では x86 (\build\x86\vc12) を使用していることです。
両方のプログラムで、次の手順が実行されます。
imread を使用してイメージを読み取る
COLOR_BGR2GRAY で cvtColor を使用してグレースケールに変換します
ヒストグラム等化を実行します。
a. CLAHE object is created using clipLimit=2.0, tileGridSize - 8x8 b. apply CLAHE on gray image
- 画像の高さと幅を取得します。
画像を 600X800 SVGA サイズにスケーリング
を。幅 > 高さの場合、スケール = 幅 / 800.0
b. それ以外のスケール = 高さ / 600.0
c. 上記の倍率「scale」で「resize」を使用してください
- MSER オブジェクトの作成
- setDelta(4)
- detectRegions を呼び出す