图像大小使用imread和大小不匹配 - matlab

时间:2014-10-18 08:28:20

标签: matlab

为什么当我读取图像im = imread('pears.png')时,我看到工作区486x732x3单元8,但是当我运行[height, width] = size(im)时,我得到高度486和宽度2196?当我读m83.tif时一切都好。它与颜色有关吗?哪种类型的文件将乘以3?

1 个答案:

答案 0 :(得分:1)

遵循imread:

的文档
A = imread(FILENAME,FMT) ...

If the file contains a grayscale image, A is an M-by-N array
If the file contains a truecolor image, A is an M-by-N-by-3 array.

因此,您想拥有的只是第一个维度。但是,由于 im 是三维的,大小将仅在查询两个维度时返回重新整形的数组的大小。您将看到您的第二个维度是大小(im,2)*大小(im,3)

只需使用

[height, width, ~] = size(im)

这将查询三个维度但删除第三个输出参数。还使用:

height = size(im,1);
width = size(im,2);

将起作用并且是一种保存解决方案。

请参阅以下代码以获得更多说明:

>> im = ones([40,20,3]);
>> [h,w] = size(im)

h =

    40


w =

    60

>> [h,w,~] = size(im)

h =

    40


w =

    20

>> h = size(im,1)

h =

    40

>> w = size(im,2)

w =

    20