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