php - определение местоположения рисунка на графике - PullRequest
2 голосов
/ 25 февраля 2012

Я провожу небольшое исследование, чтобы выяснить, можно ли написать php, способный обрабатывать изображение путем определения местоположения определенного шаблона / объекта, а затем вывести местоположение объекта в пикселях xy.

Проект должен использоваться для обработки карт, где все карты генерируются с использованием одного и того же процесса, а значок места остается неизменным (включая одинаковый размер - 16x17 пикселей) в каждом случае.

Типичная карта будет выглядеть как http://s140173.gridserver.com/so/map.gif

... и поэтому очевидно, что отдельная иконка выглядит как http://s140173.gridserver.com/so/icon.gif

Я планировал зациклить скрипт поискаЧтобы найти первый «значок», добавьте положение xy значка в массив, затем затемните / деформируйте значок (в памяти, используя функцию изображения) и повторите поиск, чтобы снова найти «первый значок» (так как оригинал больше не будет совпадать, поскольку он был искажен) - но я не уверен в любом классе / функции / расширении, способном сопоставлять графику таким образом.

Любые мысли по поводу hили может быть выполнено это сопоставление с образцом?Существуют ли какие-либо библиотеки или расширения, способные сделать это?Если нет, то может ли кто-нибудь предложить другую подходящую платформу?

Приветствия.

1 Ответ

1 голос
/ 25 февраля 2012

Используя GD, это было бы ОЧЕНЬ медленно и неэффективно, но, предполагая, что значок будет одинакового размера, вы можете легко проходить по изображению и продолжать сравнивать все возможные прямоугольники этого размера, пока не найдете совпадение.Это были бы две петли for, получив цвет с imagecolorat и сравнив эти прямоугольники с вашей целью, для чего существует множество простых способов реализации.Но я не рекомендую этого, так как для определения каждой маленькой цели потребуется несколько секунд.

Возможно, вы захотите взглянуть на OpenCV , который может выполнять этот тип интеллектуального анализа изображений, ноэто довольно сложно использовать.Это был бы лучший способ сделать это, но это не PHP и может быть излишним для ваших целей.

...