0

我有一个图像('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 (image) 表示不同的大小,而不是 imshow 图像中显示的像素大小。

谢谢

4

1 回答 1

0

这是因为您有一个 RGB 图像(即三维中的 3 个通道)。当您显式请求两个输出时,size它会返回第一个输出的行数和列数乘以第三个维度 (284 x 3) 的大小作为第二个输出

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

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

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

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

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

nRows = size(image, 1);
nColumns = size(image, 2);
于 2016-05-02T02:29:18.907 回答