imshow
функция используется только для показать изображение в MATLAB. Если вы хотите сохранить его, вам совсем не нужен imshow
. И: значение (New
), возвращаемое imshow()
, является ручкой для фигуры. Вам нужен этот дескриптор, если вы хотите изменить способ отображения фигуры на экране.
Чтобы записать образ на диск, вам нужна только функция imwrite
, которая имеет следующий синтаксис:
imwrite(A,filename)
где A
является массивом изображения. Если имя файла заканчивается .jpg
, то по умолчанию MATLAB создаст образ JPEG, поэтому вам не нужно указывать его. (Но, конечно, вы все еще можете.)
Но перед сохранением: у вас есть проблема с нормализацией изображения. MATLAB предполагает, что изображение double
масштабируется до [0,1]
и что изображение uint8
масштабируется до [0,255]
. С imshow(im,[])
вы переопределите эти значения по умолчанию и сделайте MATLAB для вычисления новых значений. При сохранении вы столкнетесь с такой же проблемой. Решение - правильно нормализовать изображение. Это можно сделать, используя функцию im2uint8
, которая масштабирует ввод до максимального значения 255 и преобразует его в uint8
. Обратите внимание, что вы должны удалить минимальное значение вручную, если это необходимо:
newImage = im2uint8(MHI{t} - min(MHI{t}(:)));
imwrite(newImage,'TMHI.jpg')
Попробуйте 'imwrite (uint8 (MHI {t}), 'TMHI.jpg', 'jpg')'. 'imshow' не делает enything для самих данных. ваша переменная 'New' - это только фигурный дескриптор. – Adiel
Мне нужно поставить '[]' иначе изображение не будет отображаться правильно. Но когда я делаю 'imwrite (uint8 (MHI {t}, []), 'TMHI.jpg', 'jpg')' Я получил ошибку. –
Какое сообщение об ошибке? – Daniel