什么是Imagemagick的+ distort DePolar的OpenCV等效项?

时间:2019-04-14 05:19:03

标签: opencv imagemagick imagemagick-convert

Imagemagick的+distort DePolar documentation说,该命令将图像从极性转换为笛卡尔,并保留极性图像的长宽比。

在OpenCV中有与此等效的东西吗?我一直在看linearPolar,但功能似乎更复杂。

编辑linearPolar接近+distort DePolar,但是Imagemagick命令正确地更改了生成图像的大小,而linearPolar并没有更改尺寸。

1 个答案:

答案 0 :(得分:1)

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)