【问题标题】:Draw angle line over an image - Matlab在图像上绘制角度线 - Matlab
【发布时间】:2018-11-15 04:36:52
【问题描述】:

为什么我画的角度线不是正确的。我得到的是 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);

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

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

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

    【讨论】:

    • 如果我使用 cy = -y1/2 我没有得到线图。
    • 看来我们是同时发的!很高兴您在那里也有解决方案。我回答这个问题太直白了。 :)
    【解决方案2】:

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

    get(gca,'YDir')
    

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

    你也可以这样做

    axis on
    

    查看刻度线和值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2014-03-15
      • 2012-05-26
      • 2014-04-13
      • 2014-09-06
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多