为什么 imread 图像的尺寸(y 轴)比实际尺寸大

why size (y axis) of imread image is bigger than real

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

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

显示如下。

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

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

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

所以,我做错了什么吗?或 [x,y]=size (image) 表示不同的大小而不是 imshow 图像中显示的像素大小。

谢谢

这是因为您有一个 RGB 图像(即三维中的 3 个通道)。当您从 size 明确请求两个输出时,它 returns 第一个输出的行数和列数 乘以 第三维的大小(284 x 3) 作为 the second output

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

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

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

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

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

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