为什么我画的角线不正确。而不是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);
答案 0 :(得分:2)
在显示图像时,例如使用imshow
或image
,MATLAB会反转y轴。因此,图像数据的第一行(最低行索引)显示在图的顶部。为了解决这个问题,因此您需要将倒数第二行代码中的符号翻转为负数:
yAngleLine(2) = yAngleLine(1) - lineLength * sind(angle);
答案 1 :(得分:1)
imshow
将y轴上下颠倒。您可以通过以下方式看到此信息:
get(gca,'YDir')
哪个会说'normal'
(y轴刻度向上增加)或'reverse'
(y轴刻度向下增加)。就您而言,您会看到'reverse'
。
您也可以
axis on
查看刻度线和值。