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