def rotateNormalizedCord(self, matx, maty, angle):
h, w = matx.shape
x_avg = np.mean(matx)
x_min = np.min(matx)
y_avg = np.mean(maty)
y_min = np.min(maty)
xmat = np.zeros((h, w), dtype=np.float)
ymat = np.zeros((h, w), dtype=np.float)
for k in range(h):
for j in range(w):
cor_y = k - h / 2
cor_x = j - w / 2
if cor_x == 0 and cor_y == 0:
xmat[k][j] = x_avg
ymat[k][j] = y_avg
else:
x_dis = math.cos(math.pi / 2 - angle) * (-math.tan(math.pi / 2 - angle) * cor_x + cor_y)
xmat[k][j] = x_avg - (x_avg - x_min) * x_dis * 2 / w
y_dis = math.cos(angle) * (math.tan(angle) * cor_x + cor_y)
ymat[k][j] = y_avg + (y_avg - y_min) * y_dis * 2 / h
return xmat, ymat
评论列表
文章目录