Причина, по которой прямоугольник не отображается на сохраненном изображении, заключается в том, что вы не изменяете переменную im
, в которой хранятся данные изображения. Прямоугольник - это просто объект графика, отображаемый поверх изображения. Вы должны изменить сами данные изображения.
Как правило, изображения, считываемые в MATLAB, загружаются как матрица размером N × M × 3 (то есть изображение пикселя N × M со значениями RGB (красный-зеленый-синий) для каждого пикселя). Обычно данные изображения относятся к типу данных uint8, поэтому значения RGB варьируются от 0 до 255. Если вы хотите изменить значение RGB для данного пикселя, вы должны сделать следующее:
im = imread('test.jpg'); % Load a jpeg image
im(1,1,1) = 255; % Change the red value for the first pixel
im(1,1,2) = 0; % Change the green value for the first pixel
im(1,1,3) = 0; % Change the blue value for the first pixel
imwrite(im,'new.jpeg'); % Save modified image
Существуют различные способы изменения более одного пикселя за раз (т. Е. Прямоугольной области), что потребует, чтобы вы изучили, как индексировать в многомерные массивы . Для получения более подробной информации о том, как различные типы изображений считываются в MATLAB (например, truecolor против indexed ), я бы проверил документацию для imread .