2
我的問題如下: 我有一個圖像中的兩個點,我得到這兩個點之間的角度,並通過這個角度旋轉圖像。我需要在圖像中獲取這些點的新位置,但是當我嘗試使用具有相同角度的旋轉矩陣旋轉這些點時,這些點不會一致,下面的代碼中出現了什麼問題?使用Python的圖像旋轉
def rotMat(angle):
return asarray([[cos(angle), -sin(angle)],[sin(angle),cos(angle)]])
for i in batch2:
figure(1)
filename = "../imagens/" + i[-1]
outputFile = "./output/" + i[-1]
x1 = float(i[22]) # x coordinate of first point
y1 = float(i[23]) # y coordinate of first point
x2 = float(i[34]) # x coordinate of second point
y2 = float(i[35]) # y coordinate of second point
# angle of rotation
angle = arctan((y1-y2)/(x1-x2))
im = imread(filename)
im = ndimage.rotate(im, angle*180/pi, reshape=False)
imshow(im)
p1 = asarray([x1,y1])
p2 = asarray([x2,y2])
# Rotating the points
# [512,680] is the center of the image
p1n = (p1-[512,680]).dot(rotMat(angle)) + [512,680]
p2n = (p2-[512,680]).dot(rotMat(angle)) + [512,680]
print p1n, p2n
plot(p1n[0],p1n[1],'d')
plot(p2n[0],p2n[1],'d')
savefig(outputFile)
clf()
恩,謝謝!這個問題實際上是翻譯......應該是(680,512),當我得到圖像形狀(1024,1360,3)時,我忘記了1360是x座標>。> 關於旋轉矩陣,唯一的不同之處在於它是順時針的,所以我需要使用-angle – flaviotruzzi