Я хочу преобразовать (перевести, повернуть и масштабировать) изображение на основе 3 точек, определенных на обоих перекрывающихся изображениях. Основываясь на координатах пикселей трех точек, я хочу создать большой tiff, который объединяет их. Для следующего наложения я хочу сделать то же самое и т. д., пока не получу большой tiff, который объединяет все изображения. Это немного похоже на географическую привязку, но без использования координат. Проблема в том, что у меня нет опыта работы с matplotlib. До сих пор я создал скрипт, который показывает каждую пару перекрывающихся изображений рядом, и когда я закрываю окно, открывается следующая пара и т. д. Мне также удалось получить координаты пикселей из точек, на которые были нажаты эти изображения. Но теперь я должен начать трансформацию, основанную на 3 пунктах, и я просто не знаю, с чего начать. Любая помощь по полезным функциям и т. д.?
РЕДАКТИРОВАТЬ: изображения представляют собой тепловые изображения с низким разрешением, поэтому я не думаю, что автоматические преобразования будут работать.
1 ответ
Вы можете использовать wand
, который является привязкой Python к ImageMagick. Итак, начнем с этого изображения:
Мы можем исказить красную вершину (138,80) в верхний левый угол, зеленую (43,22) в нижний левый и синюю (49,125) в нижний правый угол следующим образом (изображение 152x152):
#!/usr/bin/env python3
from wand.image import Image
# Open image and distort, giving start x,y and end x,y for 3 points
with Image(filename='start.png') as img:
points = (138, 80, 0, 0, # Red vertex
43, 22, 0,152, # Green vertex
49,125, 152,152) # Blue vertex
img.distort('affine',points)
# Save result
img.save(filename='result.png')
Вы можете сделать то же самое в Терминале из командной строки:
magick start.png -distort affine "138,80 0,0 43,22 0,152 49,125 152,152" result.png
Ключевые слова: обработка изображений, Python, искажение, искажение, аффинное преобразование, преобразование, масштабирование, поворот, ImageMagick.
Похожие вопросы
Новые вопросы
python-3.x
НЕ ИСПОЛЬЗУЙТЕ, ЕСЛИ ВАШ ВОПРОС ТОЛЬКО ДЛЯ PYTHON 3. Всегда используйте вместе со стандартным тегом [python].
numpy