在Delphi源码有个叫BitmapData的一个找图找色组件性能非常好效果也很给力.一直想用C#实现但是最初实现的性能实在太糟糕了. 找个图片基本都是6 秒以上. 后来经过自己改进开unsafe 用指针后速度有了比较大的提升基本满足了做模拟外挂或者做UI测试的时候图像判断。现在公布出来给大家参考下 如果有更好的性能提升优化请在讨论下面留言 不胜感激。

目前只支持 24位的bmp 其他的就不支持了 源码在下面有时间可以自己改下  我机器配置如下:e31230 8G 找图片 在  1980 1080的图找 20*20的图片没设置背景透明色的情况下   100ms以内 算是满足做找图需求了。

 

使用如下:

            //定义色差范围值

            BGR bgr = new BGR();
            bgr.B = 1;
            BitmapDataFinder big = new BitmapDataFinder("C:\\b.bmp");
            big.Name = "母图";
            BitmapDataFinder targ = new BitmapDataFinder("C:\\a1.bmp");
            targ.Name = "子图";

    可以对图片设置背景色.有时候子图 是有透明的地方的,这里用到  BackColor 设置一个颜色为透明色  颜色类型为BGR

            targ.BackColor=;


            Stopwatch watch = new Stopwatch();
            int x = 0, y = 0;
            watch.Start();
            bool b = big.Find(targ, bgr, ref x, ref y);
            watch.Stop();
            MessageBox.Show(watch.ElapsedMilliseconds.ToString() + "   " + x.ToString() + "," + y.ToString());

代码下载