Замена четырехугольника на квадрат, сгенерированный из PIL.QUAD - PullRequest
1 голос
/ 17 апреля 2020

Я работаю над проблемой компьютерного зрения, связанной с некоторыми преобразованиями c, и могу использовать вашу помощь.

Входное изображение:

huawei_0001_01-before transform

Преобразованное изображение

huawei_0001_01

Я понимаю, что мы берем этот четырехугольник и наклоняем его и растягиваем, чтобы получить прямоугольник: extracted

Мне интересно чем соотношение растягивает четырехугольник, чтобы получить прямоугольник ? На какой угол наклонен четырехугольник, чтобы получить квадрат ? Например, если бы нам пришлось заменить четырехугольное сечение преобразованным изображением (т.е. заменить изображение 3 изображением 2), что было бы наилучшим способом сделать это?

1 Ответ

1 голос
/ 17 апреля 2020

уф! Я понял это, используя этот полезный ответ на Слияние исправленного в перспективе изображения с прозрачным фоновым шаблоном изображения с помощью PILLOW [PIL, Python]

Пока вы используете QUAD для go с quadrilateral для rectangle, вы можете использовать перспективу для go возврата от rectangle до quadrilateral

#!/usr/bin/env python3

from itertools import chain
from wand.color import Color
from wand.image import Image

with Image(filename='image2') as cover, Image(filename='image3') as template:
    w, h = cover.size
    cover.virtual_pixel = 'transparent'
    source_points = (
        (0, 0),
        (w, 0),
        (w, h),
        (0, h)
    )
    destination_points = (
        (628+78.37203406,  35.24937345),
        (628+577.65062655,  62.72203406),
        (628+550.17796594, 562.00062655),
        (628+50.89937345, 534.52796594)
    )
    order = chain.from_iterable(zip(source_points, destination_points))
    arguments = list(chain.from_iterable(order))
    cover.distort('perspective', arguments)

    # Overlay cover onto template and save
    template.composite(cover,left=0,top=0)
    template.save(filename='result.png')
...