假设我有一张图片I
和一张h1
行。使用Matlab,我可以像这样绘制线条(或线段)
h1 = plot( [l1 l1],[20 100], 'r');
现在我想以45°的角度旋转图像I
。所以我用imrotate
这样:
IR = imrotate(I,45);
现在,我想旋转线,如何使用Matlab做到这一点?
我找到了函数rotate
。我正在尝试这个,但它不起作用!
rotate(h1,[1 1],45);
答案 0 :(得分:4)
要旋转线条,您可以明确地"旋转"通过使用旋转矩阵定义线的点:
旋转中心由"偏移"定义。添加到线的坐标点:
在以下示例中,线条围绕:
旋转更新了代码
% Definition of the L1 parameter
L1=13;
% Definition of the points A and B
A=[L1,20]
B=[L1,100]
x=[A(1) B(1)];
y=[A(2) B(2)];
% Definition of the offset
x_offset=[x(1) 0 x(1)];
y_offset=[y(1) 0 50];
for k=1:3
figure
% Plot of the original line
plot(x,y,'r','linewidth',2)
grid on
hold on
for a=10:10:350
% Definitin of the rotation angle
% a=45;
t=a*pi/180;
% Definition of the rotation matrix
mx=[ ...
cos(t) -sin(t)
sin(t) cos(t)
];
% Traslation and rotation of the points A and B
x1_y1=mx*[x - x_offset(k);y - y_offset(k)]
x1=x1_y1(1,:);
y1=x1_y1(2,:);
% Plot of the rotated line
ph=plot(x1+x_offset(k),y1+y_offset(k),'b','linewidth',2)
daspect([1 1 1])
% xlim([-100 30])
% ylim([-80 120])
plot(x1+x_offset(k),y1+y_offset(k),'o','markeredgecolor','b', ...
'markersize',3,'markerfacecolor','b')
pause(.05)
% delete(ph)
end
legend('Original','Rotated',-1)
end
删除上一行(使用函数delete
)并淹没新行。
在MatLab 2015上存在函数rotx
。
希望这有帮助。
围绕A点旋转
围绕原点旋转(0,0)
绕线点旋转
答案 1 :(得分:0)
这是一个围绕原点(0,0)旋转两个点并在绘图上显示结果的函数。
[Af,Bf] = rotateTwoPoints(A,B,10)
A(13,20),B(13,100)和t = 10°
的图像旋转Theme.AppCompat