В настоящее время я в C # пытаюсь найти способ найти определенный шаблон в большом изображении, на самом деле скриншот.Требуется 100% -ное совпадение, поэтому проблема довольно проста.
Материал теста: http://www.myhideout.eu/temp/pattern.png (Примечание: прозрачные пиксели не имеют значения и не должны проверяться.) http://www.myhideout.eu/temp/test.png
Если шаблон найден, мне понадобится какая-то координата, чтобы я знал, где, но это самая простая часть.
Единственный подход, который я до сих пор придумал, - это очевидный.Возьмите первый пиксель шаблона и повторяйте тестовое изображение до тех пор, пока не будет найдено совпадение, затем тестируйте оставшуюся часть шаблона, пока тест не завершится неудачей или не останется больше шаблона.Если тест не пройден, перейдите к следующему пикселю, который соответствует первому пикселю шаблона, и повторите попытку.Если вы пробуете тестовое изображение без совпадения, то, очевидно, такого шаблона нет, и это должно быть результатом теста.
Я считаю, что это работает, но в действительности все немного сложнее.Я еще не нашел подходящего способа структурирования кода, и в моих тестовых примерах были некоторые довольно странные ошибки, что неудивительно, учитывая сложность.
Однако, мой самый большойбеспокойство время.Это лишь небольшая часть длительного процесса, и цель состоит в том, чтобы сократить общее время выполнения до нескольких секунд.Представьте себе изображение 1920 * 1200, которое приблизительно соответствует пределу, где шаблон находится в конце, и перед этим происходит несколько частичных совпадений.
Я, конечно, искал сеть, различные форумы и т. Д., Нотолько материал, который я придумаю, очень продвинутый и будет мало полезен, даже если мне удастся понять, что он предназначен для совсем других целей.
Я также думал о том, можно ли будет преобразовать шаблон иПротестируйте изображение с каким-то набором битов, а затем просто «И», «СДВИГ» и / или «ПРОСМОТРЕТЬ», но это выходит за рамки моих текущих возможностей.
Я думаю, что в значительной степени я описал свои проблемы здесь.Прошу прощения за отставание примеров кода, но то, что у меня есть, было бы бесполезным для кого-либо, а также немного смущало.
Я буду очень признателен за любую помощь.