在图像上绘制角度线 - Matlab

Draw angle line over an image - Matlab

为什么我画的角度线不对。我得到的是 315 而不是 45 度?

脚本:

clc;
clear;
url='http://clipart-library.com/images/Bcgrakezi.png';
I = imread(url);
imshow(I);
hold on;

[y1,x1,z1] = size(I);
cy=y1/2;
cx=x1/2;

sz = 50;
scatter(cx,cy,sz,'d')

lineLength = 250;
angle = 45;
xAngleLine(1) = cx;
yAngleLine(1) = cy;
xAngleLine(2) = xAngleLine(1) + lineLength * cosd(angle);
yAngleLine(2) = yAngleLine(1) + lineLength * sind(angle);
plot(xAngleLine, yAngleLine,'g','LineWidth',5);

显示图像时,例如 imshow or image,MATLAB 会反转 y 轴。这是图像数据的第一行(最低行索引)出现在图的顶部。因此,为了解决这个问题,您需要将倒数第二行代码中的符号翻转为负数:

yAngleLine(2) = yAngleLine(1) - lineLength * sind(angle);

imshow 将 y 轴上下颠倒。您可以通过以下方式查看:

get(gca,'YDir')

这会说 'normal'(y 轴刻度向上增加)或 'reverse'(y 轴刻度向下增加)。在您的情况下,您会看到 'reverse'.

你也可以

axis on

查看刻度线和值。