为什么imread图像的大小(y轴)大于real

时间:2016-05-02 02:20:19

标签: matlab imshow imread

我有一张图片('strawberry.jpg') strawberry.jpg

image=imread('strawberry.jpg');
imshow(image);

显示如下。

imshowimage

我认为x和y轴以照片的像素显示。但是当我尝试使用

来获得大小时
 [x,y]=size(image)

然后我得到x = 177和y = 852.但是这个值与imshow图像中显示的值并不接近。

所以,我做错了什么?或者[x,y] = size(图像)意味着不同的尺寸而不是imshow图像中显示的像素尺寸。

由于

1 个答案:

答案 0 :(得分:0)

这是因为你有一个RGB图像(即第三维中有3个通道)。当您明确请求size的两个输出时,它会返回第一个输出的行数和列数第三个​​维度的大小(284 x 3)为{{3 }}。

如果您想要RGB图像的真实尺寸,则需要将三个输出指定为大小。

[nRows, nColumns, nChannels] = size(image);

或者,您可以从size请求单个输出,它将生成一个大小数组,其中每个元素对应 维度中的大小。

sz = size(image);
%// 177   284   3

或者使用第二个输入参数来明确指定您关注的维度。

nRows = size(image, 1);
nColumns = size(image, 2);