テンプレート マッチングを使用して単純な openCV アプリケーションを作成しています。ここでは、比較して大きな画像内の小さな画像を見つけ、結果を true (一致が見つかった場合) または false (一致が見つからなかった場合) として返す必要があります。
Imgproc.matchTemplate(largeImage, smallImage, result, matchMethod);
Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
MinMaxLocResult mmr = Core.minMaxLoc(result);
double minMaxValue = 1;
if (matchMethod== Imgproc.TM_SQDIFF || matchMethod== Imgproc.TM_SQDIFF_NORMED)
{
minMaxValue = mmr.minVal;
useMinThreshold = true;
}
else
{
minMaxValue = mmr.maxVal;
}
問題は、この minMaxValue を使用して決定 (true/false) を行うことです。上記の 2 つのメソッド TM_SQDIFF と TM_SQDIFF_NORMED は低い値を返し、他のメソッドは高い値を返すことを知っているので、2 つの異なるしきい値を設定し、しきい値の 1 つを比較できます (テンプレート メソッドの種類によって異なります)。
そのため、MinMaxLocResult が返す minVal と maxVal の範囲を誰かが説明できれば幸いです。
0~1の範囲ですか?
はいの場合、Max タイプ テンプレート メソッドの値 1 は完全に一致しますか?