【问题标题】:How to simply find coord's of Image B (smaller ) inside of image A (screenshot /big)?如何在图像 A(屏幕截图/大)内简单地找到图像 B(较小)的坐标?
【发布时间】:2016-12-15 22:35:48
【问题描述】:

我正在尝试制作一个基本工具,它会自动将鼠标移动到菜单,并从下拉菜单中选择已选择的内容。

所以,这就是我试图让我的鼠标导航到的地方,特别是“saimon”部分。我将此屏幕截图称为 A

用户窗口的屏幕截图,比 A 更大。我只想导航到该屏幕中 A 的部分。

希望您了解这里的目标。

无论如何,我试图做一些简单的事情,比如使用 If 语句,看看我是否会在屏幕截图中找到那个图标,如果我找到了。它会导航到那些坐标(我可以手动输入,通过让用户将菜单放在特定位置或自动获取坐标)。如果不匹配,我只会说一个错误。

【问题讨论】:

标签: c# image bitmap


【解决方案1】:

此答案使用 OCR 查找文本“Saimon”的位置 X、Y 坐标

你下载TessNet(2)

Tessnet2 是一个使用 Tesseract 引擎的 .NET 2.0 开源 OCR 程序集。

你可以实现类似这样的代码:

using System;

namespace OCRTest
{
    using System.Drawing;

    using tessnet2;

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var image = new Bitmap(@"C:\OCRTest\saimon.jpg");
                var ocr = new Tesseract();
                ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,$-/#&=()\"':?"); // If digit only
                //@"C:\OCRTest\tessdata" contains the language package, without this the method crash and app breaks
                ocr.Init(@"C:\OCRTest\tessdata", "eng", true); 
                var result = ocr.DoOCR(image, Rectangle.Empty);
                foreach (Word word in result){
                    if(word.contains("aimon")){
                        Console.WriteLine("" + word.Confidence + " " + word.Text + " " +word.Top+" "+word.Bottom+ " " +word.Left + " " +word.Right);
                    }
                }

                Console.ReadLine();
            }
            catch (Exception exception)
            {

            }
        }
    }
}

您应该能够使用这些坐标来自动单击鼠标。

test online with another OCR OCR 的工作原理,请提供您的屏幕打印并检查其结果。现在 OCR 太好用了!

【讨论】:

  • @SimpleVar:如果我打错字,请更正我的帖子或编写/添加代码以使用坐标执行实际的鼠标点击。
  • 为什么是'aimon'? -> 第一个字符并不总是被正确识别。
  • 我在 stackoverflow 上看到了这些关于获得免费托管的 azure-cloud 广告。任何人都可以在 Azure 中托管这个 OCR 解决方案,并在实际中展示它吗?
  • 这样理解起来就简单多了。谢谢你,朋友。你有Skype或任何其他形式的交流吗?如果我有一些问题,我很乐意向您寻求帮助或澄清。
  • @Tony_KiloPapaMikeGolf 对于异常我应该写什么?
猜你喜欢
  • 2011-07-20
  • 2021-08-30
  • 2020-09-26
  • 2013-01-12
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
相关资源
最近更新 更多