Изменение перспективы изображения с помощью python

Рейтинг: 2Ответов: 1Опубликовано: 29.05.2023

Мне нужно изменить перспективу изображения с помощью Python как я могу это сделать? Какие модули отлично подойдут для этой задачи?

Пример:

До

После

Ответы

▲ 0

Для изменения перспективы можно воспользоваться этим кодом. Спасибо всем за помощь:)

import cv2
import numpy as np


def change_perspective(image, src_points, dst_points):
    # Определение матрицы преобразования
    M = cv2.getPerspectiveTransform(src_points, dst_points)

    # Применение преобразования перспективы
    transformed_image = cv2.warpPerspective(image, M, (image.shape[1], image.shape[0]))

    return transformed_image


# Загрузка изображения
image = cv2.imread("i.png")

# Определение точек исходной и целевой перспективы
src_points = np.float32(
    [
        [0, 0],
        [image.shape[1] - 1, 0],
        [0, image.shape[0] - 1],
        [image.shape[1] - 1, image.shape[0] - 1],
    ]
)

# Задание процента уменьшения высоты (например, 20% уменьшение)
height_reduction_percentage = 20
reduction_pixels = int(image.shape[0] * (height_reduction_percentage / 100))

# Изменение точек целевой перспективы для желаемого преобразования
dst_points = np.float32(
    [
        [0, 0],
        [image.shape[1] - 1, reduction_pixels],
        [0, image.shape[0] - 1],
        [image.shape[1] - 1, image.shape[0] - 1 - reduction_pixels],
    ]
)

# Изменение перспективы изображения
transformed_image = change_perspective(image, src_points, dst_points)

# Отображение исходного и преобразованного изображений
cv2.imshow("i.png", image)
cv2.imshow("ii.png", transformed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()