用字母显示图片 Mtalab
2015-12-19 21:45
309 查看
前段时间看到网上有这种用字母显示的图片,没事就自己写了段代码实现。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/proud.gif)
![](https://img-blog.csdn.net/20151223230115873?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151223230145510?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码如下:
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); %关闭文件
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/proud.gif)
代码如下:
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); %关闭文件
相关文章推荐
- JFileChooser 文件选择对话框API
- IT公司100题-17-第一个只出现一次的字符
- JDBC事物处理——保持数据一致性案例
- openjudge 最小新整数
- 【SQLSERVER学习笔记】分页存储过程+调用
- archlinux在命令行模式下开机自动登陆
- 美团Android资源混淆保护实践
- Fragment理解
- 模式识别之knn---KNN(k-nearest neighbor algorithm)--从原理到实现
- 布局主要代码
- VS2012配置#系列快捷方式自动生成代码
- 几种经典的网络服务器架构模型的分析与比较
- windows下利用navicat连接oracle的一些配置问题总结
- Flask搭建简单图片识别服务器
- C语言程序设计进阶 第一周1.1笔记
- 编程粒度
- Smith Numbers(Poj1142)(质因数分解+素数判定)
- c语言随机数
- nginx的502错误及常见解决方法汇总
- 一些想说的话,无关技术