你好下, 我知道之前有很多类似的问题,但是我已经阅读了所有这些问题,而且他们没有给我我想要的答案。
我想要做的是,我想创建一个函数,如果它存在,可以从屏幕获取指定图像的位置(X,Y)。
我会截取屏幕截图,指定搜索区域(矩形),然后查看它是否可以找到我正在搜索的图像中第一个像素的颜色,如果是,它会检查它是否是我可以找到我在图像高度n'宽度的距离搜索的图像的最后一个像素。如果它确实找到匹配,那么它将从中心检查10-20个像素并查看是否找到匹配的图像,如果是,则它将返回第一个像素的坐标。
FindBitmap( int[] Image, int x1, int y1, int x2, int y2 )
图像将是可搜索图像的像素阵列
X1Y1将是搜索起点,而X2Y2将是终点。
如果有人能给我指导创建这个功能,我会非常感激。
答案 0 :(得分:3)
图像识别是一个非常复杂的概念。 根据您的问题,我假设您有“精确”副本可用,并且您正试图在屏幕上找到它。
首先在位图上使用GetPixel SetPixel,然后使用LockBits对其进行优化。这是一个很好的性能提升。
另一方面,你的解决方案是一种“蛮力”尝试。
有更好的解决方案,如:
查看AForge .Net库。它包含许多用于图像处理的功能。