Подгонка случайных изображений к одному композиционному изображению с помощью скрипта

#python #imagick

#python #imagick

Вопрос:

Я пытаюсь написать скрипт (в bash с использованием imagemagick или в python), чтобы сгенерировать изображение, подобное этому примеру:

пример композиции

Источником является 25 отдельных файлов jpeg. До сих пор я написал скрипт (imagemagick), который берет каждое из изображений и обнаруживает контуры человека и заменяет белый фон прозрачным.

Следующий шаг — случайным образом вписать контуры в одно большое изображение. Каждое изображение должно вписываться в увеличенное изображение, не перекрывая его соседей. Кажется, мне нужно какое-то обнаружение столкновений.

Я ищу указатели на то, как решить эту проблему.

Комментарии:

1. Существует ли какой-то шаблон / ориентация / и т. Д., В котором отдельные изображения должны быть собраны или они вставлены случайным образом? Один из простых способов — создать маску, выбрать случайную позицию и вставить изображение, если маски не перекрывают существующую маску. Если изображения должны следовать шаблону или изменяться по размеру и ориентации, чтобы соответствовать, тогда существует много подходов. Возможно, вам нужно быть немного более конкретным.

2. Да, использование маски может быть вариантом. Заполните первое изображение вверху слева, обновите маску и поместите следующее изображение вверху слева в маске и так далее. Разницы в размере нет, но количество изображений является гибким.

3. Но что произойдет, если вы хотите, чтобы в нем было 100 изображений, и это невозможно без подгонки изображений?

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

5. Ну, да, это один из способов. Есть и другие, более «оптимальные» решения. Но разве у вас нет более конкретного вопроса? Рекомендации здесь не очень популярны.