2011-05-27 189 views
2

你好, 我知道以前有很多类似的问题,但我已经阅读过所有这些问题,但他们没有给我我正在寻找的答案。C#在屏幕上查找图像匹配

我想要做的是,我想创建一个函数,如果它存在,可以从屏幕获取指定图像的位置(X,Y)。

我会截屏,指定搜索区域(矩形),然后查看它是否可以找到我正在搜索的图像中第一个像素的颜色,如果它确实会检查它可以在图像高度n'宽度的距离处找到我要搜索的图像的最后一个像素。如果确实找到了匹配,那么它会从中心检查10-20个像素,看看是否找到了匹配的图像,如果是,那么它将返回第一个像素的坐标。

FindBitmap(int[] Image, int x1, int y1, int x2, int y2) 

图像将是可搜索的图像的像素阵列

X1Y1将是起点而X2Y2将结束点的searchareas。

如果任何人都可以给我指导创建这个功能,我会非常感激。

回答

2

图像识别是相当复杂的概念。 根据你的问题,我假设你有“确切”的副本可用,你正试图在屏幕上找到它。

首先在位图上使用GetPixel SetPixel,然后使用LockBits对其进行优化。这是一个很好的性能提升。

在一面注意你的解决方案是一个“蛮力”的尝试。

有喜欢更好的解决方案:

退房的AForge .Net库。它包含很多用于图像处理的功能。

+0

关于交叉相关:请参阅我的过去的问题,了解使用交叉相关的声音检测的实际用法和实现:http://stackoverflow.com/questions/5847570/use-convolution-to-find-a-reference-audio-样品在-A-连续流的声音 – 2011-05-27 10:11:50