在图像上绘制角度线-Matlab

时间:2018-11-14 20:06:22

标签: matlab matlab-figure

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

脚本:

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);

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

imshow将y轴上下颠倒。您可以通过以下方式看到此信息:

get(gca,'YDir')

哪个会说'normal'(y轴刻度向上增加)或'reverse'(y轴刻度向下增加)。就您而言,您会看到'reverse'

您也可以

axis on

查看刻度线和值。