0

我想使用一个调用matchTemplate来匹配模板图片与我当前屏幕的 OpenCV 函数。我当前的屏幕和模板图片保存在文件中。我正在使用下面的代码将我的模板与屏幕匹配:

Mat screen = imread("screen.bmp", IMREAD_COLOR);
Mat template = imread("template.png", IMREAD_COLOR);
int cols = screen.cols - template.cols + 1;
int rows = screen.rows - template.rows + 1;
Mat result(rows , cols , CV_8UC3);
matchTemplate(screen, template, result, TM_SQDIFF_NORMED);
double min;
minMaxLoc(result, &min, nullptr, nullptr);

结果,当模板与屏幕真正匹配时,它的值min大约等于0.003,但有时当模板与屏幕不匹配时,它也等于大约0.0045(当我使用另一张具有相似屏幕的图片时会发生这种情况) .

我想了解一个解决方案,它可能是一个可以更精确地检查它的特殊功能。我的模板图片 (template.png) 只是主屏幕 (screen.bmp) 的裁剪图片,因此最好的解决方案是一个可以逐像素匹配的 OpenCV 函数,可能偏差很小。我想完美匹配它而不是找到相似之处。

4

1 回答 1

0

教程页面

对于前两种方法( CV_SQDIFF 和 CV_SQDIFF_NORMED ),最佳匹配是最低值。对于所有其他人,较高的值代表更好的匹配。

他们的文档中也提到了这一点。

于 2020-05-15T23:41:20.603 回答