您的位置:首页 > 其它

用字母显示图片 Mtalab

2015-12-19 21:45 309 查看
前段时间看到网上有这种用字母显示的图片,没事就自己写了段代码实现。






代码如下:

clear

clc

RGB=imread('psb.jpg','jpg');                  %读入彩色图片

%figure(1),imshow(RGB),title('彩色图');         %显示彩色图片

I=rgb2gray(RGB);                                        %彩色转化成灰度图

figure(2),imshow(I),title('灰度图');                   %显示灰度图

a=size(I,1);%1200

b=size(I,2);%160

%pointArr={'.';'^';';';'I';'P';'Q';'X';'R';'%';'#';'&';'@';'M';'送';'飛';'樹';'毒';''};

%pointArr={' '; '`'; ';' ; ','; 'i';'I';'L';'V';'K';'B';'X';'H';'N';'%';'#';'&';'M';'@'};

pointArr={'.';'.';'`';'`';';';';';':';'1';'1';'j';'o';'a';'B';'M';'X';'W';'#';'@'}

%. ` : ; 1 j o a B M X W # @ 

arr(find(I<=15))=pointArr(18);

arr(find(I>15&I<35))=pointArr(17);

arr(find(I>=35&I<40))=pointArr(16);

arr(find(I>=40&I<55))=pointArr(15);

arr(find(I>=55&I<70))=pointArr(14);

arr(find(I>=70&I<85))=pointArr(13);

arr(find(I>=85&I<100))=pointArr(12);

arr(find(I>=100&I<115))=pointArr(11);

arr(find(I>=115&I<130))=pointArr(10);

arr(find(I>=130&I<145))=pointArr(9);

arr(find(I>=145&I<160))=pointArr(8);

arr(find(I>=160&I<175))=pointArr(7);

arr(find(I>=175&I<190))=pointArr(6);

arr(find(I>=190&I<205))=pointArr(5);

arr(find(I>=205&I<220))=pointArr(4);

arr(find(I>=220&I<235))=pointArr(3);

arr(find(I>=235&I<245))=pointArr(2);

arr(find(I>=245))=pointArr(1);

img=reshape(arr,a,b);

fid = fopen('test.txt','wt');  %写头部

%依次写入数据

for k=1:floor(a/80):a; 

    for m=1:floor(b/70):b

        p=img{k,m};

        fprintf(fid,'%s ',p);    %每个数据用空格隔开

    end

    fprintf(fid,'%c\n',' ');    %写完一行,换行

end

fclose(fid); %关闭文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: