我使用以下代码行来获取图片:
if true
clc;
clear all;
close all;
nMod = 7 ;
%cover image
[FileName,PathName] = uigetfile('*.jpg','Select the Cover Image');
file = fullfile(PathName,FileName);
disp(['User selected : ', file]);
cover = imresize(imread(file),[128 128]);
cover = double(cover);
if ndims(cover) ~= 3
msgbox('The cover image must be colour');
break;
end
figure;
subplot(1,2,1);
imshow(uint8(cover),[]);
title('Cover image');
我想将各种像素值的ASCII代码放入m * n
数组中,然后将其打印到控制台中。有人可以帮帮我吗?我是matlab的新手..谢谢。
答案 0 :(得分:0)
我要试一试。我想你正在寻找3个字符串,每个字符串都是根据图像的一种颜色编码数字数据。
如评论中所述,您的问题形式不是很好。但是,它并没有一些评论所暗示的那么遥远。没有有意义的方式来讨论与像素相关的ASCII字符。但是,有一个较低级别的连接。 ASCII由两位十六进制数表示。 "像素"在MATLAB中,实际上只是一个双格式数字的[1x3]数组,范围从0.0到1.0。您可以将这些双格式数字缩放到256,然后将它们编码为16位整数,然后可以将其表示为十六进制数字。 (反过来,它可以表示为ASCII。)试试这个:
%// First, separate out each color from the main image.
R = cover(:, :, 1);
G = cover(:, :, 2);
B = cover(:, :, 3);
%// Now, perform the transform detailed above.
hexR = dec2hex(int16(R*256));
hexG = dec2hex(int16(G*256));
hexB = dec2hex(int16(B*256));
%// Finally, reshape the color arrays into a single row to form a string.
strHexR = reshape(hexR.', 1, []); %'//Format
strHexG = reshape(hexG.', 1, []); %'//Format
strHexB = reshape(hexB.', 1, []); %'//Format
%// You could stop here, as the data is encoded, but if you want it in ASCII...
%// Translate to ASCII
asciiHexR = char(sscanf(strHexR, ;'%2x'));
asciiHexG = char(sscanf(strHexG, ;'%2x'));
asciiHexB = char(sscanf(strHexB, ;'%2x'));
%// Reshape to a string.
asciiStrHexR = reshape(asciiHexR.', 1, []); %'//Format
asciiStrHexG = reshape(asciiHexG.', 1, []); %'//Format
asciiStrHexB = reshape(asciiHexB.', 1, []); %'//Format
享受。如果您有任何问题,请告诉我。