作为其他答案的补充,对于您的情况,我想说:
图片大小约为 1600x1000 像素 模板大小约为 60x60 像素
这个框架不是最合适的。您要实现的目标是在其他图像中搜索更多图像,而不是比较具有不同分辨率的两个图像(例如可以使用“在 Google 上搜索此图像”)。
关于这个
称为金字塔搜索。
确实,对于更大的图像,该算法的运行速度更快。实际上图像金字塔是基于模板匹配的。如果我们采用最流行的实现(我发现并使用过):
private static bool IsSearchedImageFound(this Bitmap template, Bitmap image)
{
const Int32 divisor = 4;
const Int32 epsilon = 10;
ExhaustiveTemplateMatching etm = new ExhaustiveTemplateMatching(0.90f);
TemplateMatch[] tm = etm.ProcessImage(
new ResizeNearestNeighbor(template.Width / divisor, template.Height / divisor).Apply(template),
new ResizeNearestNeighbor(image.Width / divisor, image.Height / divisor).Apply(image)
);
if (tm.Length == 1)
{
Rectangle tempRect = tm[0].Rectangle;
if (Math.Abs(image.Width / divisor - tempRect.Width) < epsilon
&&
Math.Abs(image.Height / divisor - tempRect.Height) < epsilon)
{
return true;
}
}
return false;
}
它应该给你一张接近这个的图片:
作为底线 - 尝试使用不同的方法。也许更接近Sikuli 与.Net的集成。或者你可以试试accord .Net较新版本的AForge。
如果工作量太大,您可以尝试通过裁剪所需的页面元素来扩展您的屏幕截图功能(Selenium示例)。