Что является OpenCV-эквивалентом `+ distort DePolar` Imagemagick - PullRequest
1 голос
/ 14 апреля 2019

Документация Imagemagick +distort DePolar говорит, что команда преобразует изображение из полярного в декартовое и сохраняет соотношение сторон полярного изображения.

Есть ли эквивалент в OpenCV? Я смотрел на linearPolar, но функция кажется более сложной.

РЕДАКТИРОВАТЬ: linearPolar близко к +distort DePolar, но команда Imagemagick правильно изменяет размер результирующего изображения, тогда как linearPolar не изменяет размеры.

1 Ответ

1 голос
/ 14 апреля 2019

warpPolar - это правильная функция, так как она позволяет указать dsize, в отличие от linearPolar.

Вот код, который выдает в основном тот же результат, что и команда Imagemagick:

import cv2 as cv
import numpy as np

def undistort(img):
    height, width, *_ = img.shape
    assert height == width, "we want a square image"
    radius = int(height / 2)
    image_center = radius, radius

    dest_width = int(np.ceil(np.pi * radius))
    dest_height = int(np.ceil(radius))
    dest_size = (dest_height, dest_width)

    undistorted_img = cv.warpPolar(src=img, dsize=dest_size, center=image_center, maxRadius=radius, flags=0)
    return cv.rotate(undistorted_img, cv.ROTATE_90_CLOCKWISE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...