Я попробовал трансформацию twirl на изображении в Python.Но не получить ожидаемый результат.Все решения в Интернете представлены на языке C #.
import cv2
import math
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
img = cv2.imread('lena.jpg')
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("input",img_gray)
imgcopy=img_gray.copy()
rmax,alpha,xc,yc=input("enter rmax alpha center respectively: ").split()
rmax=float(rmax)
alpha=float(rmax)
xc=float(rmax)
yc=float(rmax)
for x in range(img_gray.shape[0]):
for y in range(img_gray.shape[1]):
fie=math.radians(alpha)
xdiff=x-xc
ydiff=y-yc
r=math.sqrt(math.pow(xdiff,2)+math.pow(ydiff,2))
if r>rmax:
nx=x
ny=y
else:
angle=math.atan2(ydiff,xdiff)+fie*((rmax-r)/rmax)
nx=round(xc+r*math.cos(angle))
ny=round(yc+r*math.sin(angle))
imgcopy[nx][ny]=img_gray[x][y]
cv2.imshow("output",imgcopy)
cv2.waitKey(0)
cv2.destroyAllWindows()
Я ожидаю, что изображение закручено, но выводится так же, как и ввод.