为什么 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);
我有一张图片 ('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);