2023年12月11日发(作者:议论抒情)
matlab图片中找字,基于MATLAB的图片中字符的提取(源代
码)
基于MATLAB的图片中字符的提取(源代码)
function getPicChar %%建立字符提取函数,在MATLAB平台上直接运行即可
%运用MATLAB的UI,直接打牌需要提取的字符图片即可
[filename,
pathname,~]=uigetfile({'*.jpg';'*.bmp';'*.png'},'Ch o a picture');
picstr=[pathname filename];
if ~ischar(picstr)
return;
end
pic=imread(picstr); %打开图片
if length(size(pic))==3 %判断图片的维数,统一为灰度图片
pic=rgb2gray(pic);
end
pic=(pic<127); %转化为二值图片
pic=xylimit(pic); %图片区域的第一次边界限定
%%%%%%%第一阶段%%%%%%
m=size(pic,1);
Ycount=zeros(1,m);
for i=1:m
Ycount(i)=sum(pic(i,:));
end
lenYcount=length(Ycount);
Yflag=zeros(1,lenYcount);
for k=1:lenYcount-2
if Ycount(k)<3 && Ycount(k+1)<3 && Ycount(k+2)<3
Yflag(k)=1;
end
end
for k=lenYcount:1+2
if Ycount(k)<3 && Ycount(k-1)<3 && Ycount(k-2)<3
Yflag(k)=1;end
end
Yflag2=[0 Yflag(1:end-1)];
Yflag3=abs(Yflag-Yflag2); %做差分运算[~,row]=find(Yflag3==1); %找突变位置
row=[1 row m]; %调整突变位置点row1=zeros(1,length(row)/2); %截取图像的起始位置向量
row2=row1; %截取图像的终止位置向量
for k=1:length(row)
if mod(k,2)==1; %奇数为起始
row1((k+1)/2)=row(k);
el%偶数为终止
row2(k/2)=row(k);
end
end
pic2=pic(row1(1):row2(1),:); %截取第一列字符alpha=1024/size(pic2,2); %计算放缩比例
pic2=imresize(pic2,alpha); %调整第一列字符图片大小,作为基准
for k=2:length(row)/2
pictemp=imresize(pic(row1(k):row2(k),:),[size(pic 2,1) size(pic2,2)]);
pic2=cat(2,pic2,pictemp); %横向连接图像块end
pic=xylimit(pic2); %限定图像区域%%%%%%%第二阶段%%%%%%
[~,n]=size(pic);
Xcount=zeros(1,n);
for j=1:n
Xcount(j)=sum(pic(:,j));
本文发布于:2023-12-11 19:01:26,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702292487243247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:matlab图片中找字,基于MATLAB的图片中字符的提取(源代码).doc
本文 PDF 下载地址:matlab图片中找字,基于MATLAB的图片中字符的提取(源代码).pdf
留言与评论(共有 0 条评论) |