我试图找出一种方法让 Sikuli 的图像识别在 C# 中使用。我不想使用 Sikuli 本身,因为它的脚本语言有点慢,而且我真的不想在我的 .NET C# 应用程序中间引入一个 java 桥。
所以,我有一个位图,它代表我屏幕的一个区域(我将这个区域称为 BUTTON1)。屏幕布局可能略有变化,或者屏幕可能在桌面上移动了——所以我不能使用直接位置。我必须首先找到 BUTTON1 的当前位置在实时屏幕中的位置。(我试图发布这个的图片,但我想我不能,因为我是一个新用户......我希望描述清楚......)
我认为 Sikuli 在幕后使用 OpenCV。由于它是开源的,我想我可以对其进行逆向工程,并弄清楚如何在 OpenCV 中做他们正在做的事情,而是在 Emgu.CV 中实现它——但我的 Java 不是很强大。
我寻找了显示这一点的示例,但所有示例都非常简单(即如何识别停车标志)或非常复杂(即如何进行面部识别)......也许我只是很密集,但我可以似乎没有使如何做到这一点的逻辑跳跃。
另外我担心所有各种图像处理程序实际上都是处理器密集型的,我真的希望它尽可能轻量级(实际上我可能有很多按钮和字段我试图在屏幕上找到......)
所以,我正在考虑这样做的方式是:
A)将位图转换为字节数组并进行暴力搜索。(我知道如何做那部分)。进而
B)使用我找到的字节数组位置来计算它的屏幕位置(我真的不完全确定我是如何做到的)而不是使用图像处理的东西。
这完全疯了吗?有没有人有一个简单的例子来说明如何使用 Aforge.Net 或 Emgu.CV 来做到这一点?(或者如何充实上面的步骤B......?)
谢谢!