C#基于图像检测做一些事情

时间:2016-05-05 08:22:33

标签: c# image detection

我正在用C#制作一个程序。我希望它能在屏幕上检测到图像时执行某些操作。例如,假设我正在制作游戏机器人。我的健康状况是我的屏幕上充满了绿色的图像,如下所示:

FULL HP BAR

有些东西把我的HP带到了这个级别:

TAKEN HP BAR

如果C#检测到带有hp的图像,请做一些事情......这可能吗?我该怎么做?感谢。

1 个答案:

答案 0 :(得分:1)

我为游戏编写了机器人。要检测生命何时变低,您可以扫描某个像素颜色并使用样本值进行测试(例如,您可以捕获矩形中间的像素,如果它是绿色,则生命的一半以上)。

我还制作了截图,剪切了一些区域,并将它们保留为位图。在我加载它们的游戏中,然后我每隔一秒制作一次屏幕截图并检查屏幕截图中是否出现了一些这些位图。

要在C#中捕获屏幕,您可以使用Graphics的CopyFromScreen方法:

var screen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                        Screen.PrimaryScreen.Bounds.Height,
                        PixelFormat.Format32bppArgb);
var graphics = Graphics.FromImage(screen );
graphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                        Screen.PrimaryScreen.Bounds.Y,
                        0, 0,
                        Screen.PrimaryScreen.Bounds.Size,
                        CopyPixelOperation.SourceCopy);