如何在图像A(截图/大)内找到图像B(较小)的坐标?

时间:2016-12-15 22:35:48

标签: c# image bitmap

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

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

_

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

希望你明白这里的目标。

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

1 个答案:

答案 0 :(得分: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太棒了!