Проверьте текст внутри изображения C #.Использование memcmp вариант? - PullRequest
0 голосов
/ 18 августа 2011

Я работаю над исследовательским проектом, который требует от меня идентификации текста на изображении. На форуме я видел сообщение об использовании memcmp, но мне не повезло с этим.

Чтобы дать более подробную информацию о моей задаче:

Я снимок экрана это. Мое изображение гласит «GPS: начальное местоположение 34 45 23».

Затем я погружаюсь в предопределенную карту изображений, которые загружаю в начале своего приложения. Карта содержит изображения для текста - Initial, Reset, Launch, ....

Как проверить, соответствует ли захваченное мной изображение одному из предопределенных изображений на карте.

Пожалуйста, помогите.

Прикрепление снимка кода

public static bool CompareMemCmp(Bitmap b1, Bitmap b2)
{
  if ((b1 == null) != (b2 == null)) return false;

  var bd1 = b1.LockBits(new Rectangle(new Point(0, 0), b1.Size), ImageLockMode.ReadOnly, b1.PixelFormat);
  var bd2 = b2.LockBits(new Rectangle(new Point(0, 0), b2.Size), ImageLockMode.ReadOnly, b2.PixelFormat);

  try
  {
    IntPtr bd1scan0 = bd1.Scan0;
    IntPtr bd2scan0 = bd2.Scan0;

    int stride = bd1.Stride;
    int len = stride * b1.Height;

    int stride2 = bd2.Stride;
    int len2 = stride2 * b2.Height;

    for (int i = 0; i < len; ++i)
    {
      bd1scan0 = bd1.Scan0 + i;

      int test = memcmp(bd1scan0, bd2scan0, len2);
      if (test == 0)
      {
        Console.WriteLine("Found the string");
        return true;
      }
    }

    return false;
  }
  finally
  {
    b1.UnlockBits(bd1);
    b2.UnlockBits(bd2);
  }
}

1 Ответ

0 голосов
/ 18 августа 2011

Если вы ищете точное совпадение, то есть совпадение, в котором все биты одинаковы, вы можете использовать этот подход.Однако, если это не так, другие алгоритмы могут быть лучше.Одним из примеров будет использование взаимной корреляции.Я использовал его для сравнения аудио файлов, и он прекрасно работает.См этот вопрос

...