我想使用一个调用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 函数,可能偏差很小。我想完美匹配它而不是找到相似之处。