Генератор тестовых изображений на php / ImageMagick
Нужно написать генератор тестовых изображений для системы распознавания монет по фотографиям.
Есть набор из нескольких сотен фотографий монет и 3 jpg "фона".
Нужно написать скрипт на php, который будет брать случайный фон, выбирать Х случайных монет, случайно у них выбирать первую сторону (аверс\реверс), случайно менять размер в определенных пределах, поворачивать их на случайный угол, размещать на фоне в нужных местах (опять же с небольшой случайной погрешностью).
После этого генерировать еще одно изображение с теми же параметрами, но выбирать уже обратную сторону монеты.
При запуске скрипта
* скрипт считывает из папки coins/ перечень монет (в виде 123_1.jpg, 123_2.jpg, 123 - id монеты, 1\2 аверс\реверс, id не по порядку, случайная выборка из базы)
* в папку test/ записывает сгенерированые картинки uniqprefix_1.jpg, uniqprefix_2.jpg , uniqprefix_coins.txt
* в uniqprefix_coins.txt записываются ID использованных монет в определенном порядке
Нюансы
* я дам 3 jpg фона, они будут отличаться по параметрам генерирования - разного размера, с разным количеством монет и их положением
* перед накладыванием монет на фон скрипт должен их обрезать - удалить фон. Идеального photoshop обрезания я не жду. В ImageMagick это можно сделать http://www.imagemagick.org/Usage/masking/#aligning Примеры монет я приатачил. Серую "тень-кайму" возле монеты тоже нужно обрезать.
* фото монет разного размера, монеты расположены не всегда с краю
* Пример фона я приатачил - это крепеж для монет.
Ответы на вопросы
В. Каков должен быть интерфейс скрипта: он запускается вручную с выставлением нужных параметров, или, например, по крону.
О. Вручную, параметры могут быть прописаны в самом скрипте в виде констант.
В. Как задаются id монет (просто имена файлов?) и в каком порядке они должны быть выведены
О. да, просто имена файлов. чтение примерно такое
$d = opendir (" res/";
while ($f = readdir ($d)) {
if (!in_array ($f,[".",".."]) &&is_file (" res/".$f)) {
preg_match_all ("'^(?\d+)\_ (?\d)'si",$f,$m);
var_dump ($m);
}
}
В. Задаются ли для каждого фона места для монет, или же их нужно вычислить алгоритмически?
О. для каждого фона вам нужно будет подобрать эксперементально места монет и пределы для рандомов.