我有一个800x800双矩阵,我需要绘制小红点。我尝试将其转换为带有mat2gray(数组,[0,1])的图像,但是在绘制到我的屏幕之前,matlab将它缩放了67%。这意味着我无法使用绘图(x,y,' r')绘制小点。
我已经尝试过查看覆盖图像,使图形看不见等,但我无法弄清楚如何做到这一点。必须有一个简单的方法。有什么想法吗?
这是我目前的代码:
%map is an 800x800 matrix of doubles
img = mat2gray(map,[0,1]);
hold on;
plot(point.x, point.y,'r.','MarkerSize',10);
hold off
img = imresize(img,0.66); %so that matlab doesn't yell at me
set(figHandle, 'visible','on');
imshow(img);
答案 0 :(得分:3)
Matlab在绘制大于窗口大小的图像时给出的警告
警告:图像太大,无法放在屏幕上;显示为67%
并不意味着它会改变数组或图像的大小。这意味着它将其绘制为正常大小,然后缩小%。你的阵列仍然是800x800。如果要在其上绘图,则应用相同的x,y坐标。例如
imshow(rand(1000))
% Warning: Image is too big to fit on screen; displaying at 67%
% In imuitools/private/initSize at 71
% In imshow at 282
hold on
plot(500,500,'r.','MarkerSize',100)
将创建此
如您所见,正如预期的那样,红点位于图像的中间。您不需要调整图片大小
同样在你的情况下,如果你首先绘制点,然后是图像,图像将显示在点上方,覆盖它们,我建议首先绘制图像,然后绘制点。