Задать вопрос
@heinlein

Как автоматически создать нескольких изображений, наложив одно изображение на другие и трансформировав форму этого изображения в процессе?

Есть множество интернет-магазинов, где продается одежда с принтами, и там как правило предлагают несколько разных видов товаров с одним принтом. Как пример: https://www.redbubble.com/i/t-shirt/Visit-Tatooine... Вопрос в том, как автоматизировать создание изображений для подобного рода товаров?

Что ясно на данный момент.

Как сделать это в фотошопе в полу-автоматическом режиме понятно -- дизайнер создает смарт-объект, над которым производятся все манипуляции и который заменяется на изображение принта. Предполагается же, что процесс наложения принтов будет проходить на сервере в момент создания товаров через админку CMS Magento.

Воспроизвести наложение картинки в нужном месте в нужном размере и смешать цвета принта и макета чтобы сквозь принт была видна форма одежды можно с помощью библиотеки, подобной OpenCV.

Проблема в этом шаге, в преобразовании формы принта так, чтобы он повторял форму одежды.

61a37ba270ae3548540207.jpeg
61a37bb01387f368623994.jpeg

Мне подсказали, что надо смотреть в сторону 2D spline deformation, пара библиотек что я глянул похоже слишком низкоуровневые для того, чтобы можно было за вменяемое время задать сложные деформации для макетов.

Возможным вариантом выглядит использование GIMPа в консольном режиме, но пока неясно, способен ли он воспроизвести все требуемые шаги автоматически. Т.е. наложить принт в нужном месте в нужном размере на макет, смешать цвета, изменить форму принта в зависимости от макета и на выходе получить изображение в JPEG и, в идеале, PSD со слоями. Smart-объектов например в нем нет, то есть воспроизвести подход, используемый в Photoshop 1 в 1 точно не получится.

Альтернативный подход, насчет которого пока совсем все неясно -- поднять отдельную виртуальную машину на Windows и пробовать автоматизировать Photoshop на ней, но этот вариант конечно выглядит сложнее использования консольного GIMP или OpenCV.

Может кто знает, как обычно подходят к решению подобного рода задач? Почему-то вообще ничего нагуглить на эту тему не удалось (может конечно не то искал), при том что наверняка это не делается вручную и задача в целом выглядит типовой.
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
@rPman
100% готовая библиотека есть, но не нагуглилась, так как задача не такая уж и сложная, ведь все можно сделать заранее.

Первоначальное фото с маской делать нужно не с белым квадратом малевича, а специально подготовленным изображением на основе шахматной доски с мелкими цветными квадратами (одинаковые цвета не должны быть рядом, просто регулярный ресунок), чтобы слишком большие складки не помешали определить, какой это квадрат

Полученное фото нужно сравнить с исходным изображением, и разница и будет теми изменениями, которые необходимо делать с целевыми изображениями, перед наложением. Каждый квадрат (область закрашенная одним цветом, чтобы не бодаться с тенями, делать фото нужно с хорошим освещением) на фото связываем с квадратом на изображении (поиск ближайшего того же цвета) а там либо искать центр либо пытаться задетектировать у квадратов углы и брать их за точки, для каждой точки строим вектор сдвига (dx,dy) на который нужно подправить соответствующий квадрат, затем сплайнами считаем эти вектора для каждой точки на изображении, полученную матрицу используем для правки всех фото.

Ищи библиотеки, с эффектом warping/morphing, те что есть работают по ключевым точкам, как раз те что рассчитываешь по центрам квадратом в моем описании выше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы