Преобразовать изображение в массив и снова показать его в изображении - PullRequest
0 голосов
/ 17 октября 2018

Я использую следующий код, чтобы показать изображение из массива, ранее преобразованного в массив.Но изображение не отображается правильно:

I = imread('ut.jpg');
image=mat2gray(I);
imshow(image);
FID = fopen('FileName.txt', 'w');
if FID == -1, error('Cannot create file.'); end
fprintf(FID, '%g  %g  %g ... %g \n', image);
fclose(FID);
x = 100*rand(512,1500);
fileID = fopen('FileName.txt','w');
fprintf(fileID,'%f',x);
fclose(fileID);
imshow(x);

1 Ответ

0 голосов
/ 17 октября 2018

Растровые изображения состоят из двух вещей.Первый: 3 матрицы с интенсивностью цвета, градуированные как uint, числа от 0 до 255. Второй: заголовок, содержащий информацию о размере, глубине цвета, длине файла и т. Д.

Ваша программа не создает правильные изображения, потому что онаотсутствует заголовок.

Относительно процедуры matlab:

Используя imread для изображения RGB, вы автоматически создаете матрицу.Если вы преобразуете его в оттенки серого с помощью rgb2gray, у вас будет одна матрица uint (без каких-либо дополнительных слоев).

Если вы хотите сохранить изображение после обработки, просто используйте:

I = imread('ut.jpg');

% Convert, do smth e.g. I_new = rgb2gray(I);

filename = 'myNewImage.jpg';
imwrite(I_new,filename);

Используя imwrite, вы автоматически создаете правильный заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...