Почему, когда я читал изображение im = imread('pears.png')
Я вижу в рабочем пространстве 486x732x3 блок 8, но когда я запускаю [height, width] = size(im)
, я получаю высоту 486 и ширину 2196 ?. Когда я читаю m83.tif, все в порядке. это связано с цветом? какой тип файла будет умножен на 3, чем?Размер изображения при использовании imread и размер не совпадают - matlab
0
A
ответ
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 является трехмерным, а размер будет возвращать размер перестроенного массива при запросе только двух измерений. Вы увидите, что ваши второй dimeions является продуктом размер (им, 2) * размер (им, 3).
Просто используйте
[height, width, ~] = size(im)
Это будет запрашивать три измерения, но падение третьего параметра вывода. Также использование:
height = size(im,1);
width = size(im,2);
будет работать и является решением для сохранения.
Смотрите следующий код для получения дополнительной clarifictaion:
>> 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