matlab 字符转图片,matlab 图像转化成字符图像 | 学步园

%读入图像

bw=imread('a.jpg');

bw=rgb2gray(bw);

[m,n]=size(bw);

for i=1:m

forj=1:n

if(bw(i,j)>70)

bw(i,j)=0;

else

% bw(i,j) =mod( mod(bw(i,j),20),10);

bw(i,j) =mod(bw(i,j),10);

end

end

end;

% imshow(bw);

%输出图像

file=fopen('a.txt','w');

for i=1:m

forj=1:n

if(bw(i,j)>0)

fprintf(file,'%d',bw(i,j));

else

fprintf(file,' ');

end

end

fprintf(file,'\n');

end;

fclose(file);

简单的将图像转化成灰度图像 然后筛掉一些背景 剩下像素mod10 显示,对于区分度大的图片做出来的效果还是比较好的,至于区分度小的 这样做就不适合了

最后在notepad上打开 然后缩小到最小 就可以查看整体效果了

1ddb560ae234f18b98ab936a648a78b0.png

1ffca02693f6b611dbd8175387618413.png

上面代码是我之前做的版本,之后我又做了改进bw=imread('./图片/g.jpg');

bw=rgb2gray(bw);

[m,n]=size(bw);

round =10;

for i=1:m

for j=1:n

bw(i,j) = bw(i,j)+round/2-mod(bw(i,j)+round/2,round);

end

end

% for i=1:m

% for j=1:n

% if(bw(i,j)>135)

% bw(i,j)=0;

% else

% % bw(i,j) =mod( mod(bw(i,j),20),10);

% % bw(i,j)=mod( bw(i,j),10);

% bw(i,j) =mod(bw(i,j)/10,10);

% end

% end

% end;

% imshow(bw);

file=fopen('./txt/g.txt','w');

for i=1:m

for j=1:n

fprintf(file,'%c',to_text(bw(i,j)));

% if(bw(i,j)>0)

% fprintf(file,'%d',bw(i,j));

% else

% fprintf(file,' ');

% end

end

fprintf(file,'\n');

end;

fclose(file);

接下来是to_text函数

function [s] = to_text( g )

charactersARRAY = 'M80V1;:*-. ';

count = size(charactersARRAY);

count=uint8(count(2));

span =uint8(255 / count);

cidx =uint8( g / span);

if cidx > count-1

cidx = count- 1;

end;

s=charactersARRAY(cidx+1);

程序的思路是处理一下初始点,然后对剩下的点做处理

这里处理初始点的方法与多种,根据我需处理的图像的条件,我选择的方案是对齐,

之后是转化,用查表的方式将对应灰度值幻化成字符,这个字符表是经验总结出来的  画出来的效果也比较好

e1bcb14cf959af08874e1a618e25e462.png

353e8998e90c8cd7b720617efe80be41.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值