clc;
clf;
clear all;
imaqmem(30000000); %申请内存空间
%ADAPTOR:MATLAB与视频设备之间的接口,主要的目的是传递信息
vid = videoinput('winvideo', 1, 'YUY2_640x480');
set(vid,'ReturnedColorSpace','rgb');
%preview(vid);
%start(vid);
h=figure('NumberTitle','off','Name','视频',...
'MenuBar','none',...
'Position', [0.1, 0.1, 0.5, 0.5], 'Visible', 'on'); %新建窗口
set(h,'doublebuffer','on','position',[400 250 900 600]);
h1=axes('Position', [0.3, 0.2, 0.5, 1],... %新建显示窗口
'Parent',h);
hold on;
axis off;
b=1;
while b==1 %判断是否有效的图像对象句柄
a=getsnapshot (vid); % 捕获图像
flushdata(vid); %清除数据获取引擎的所有数据、置属性SamplesAvailable为0
imshow(a); %显示图像
imwrite(a,'snap1.jpg','jpg');
b=b-1;
I=imread('snap1.jpg');
figure,imshow(I);title('原始图像');
gray=rgb2gray(I);%%figure,imshow(gray);title('Grayscale image');
bw=edge(gray,'canny');
theta=1:180;
[R,xp]=radon(bw,theta);
[I0,J]=find(R>=max(max(R)));%J记录了倾斜角
qingxiejiao=90-J
I=imrotate(I,qingxiejiao,'bicubic','crop');
figure,imshow(I);title('几何校正');
imwrite(I,'correct.jpg','jpg');
L=imfilter(I,ones(5,5)/25)%第一次滤波
figure,imshow(L);title('第一次滤波');
%K=rgb2gray(I)
%figure,imhist(K,255)
M=im2bw(L,0.3)%二值化
figure,imshow(M);title('二值化');
%%L=imfilter(L,ones(5,5)/25);
%%figure,imshow(L);title('第二次滤波');
N=im2bw(L,0.013)
figure,imshow(N);title('去掉校正图的前景');
P=imadd(M,~N);
P=imfilter(P,ones(5,5)/25);
P=imfilter(P,ones(5,5)/25);
figure,imshow(P);title('留下校正图的前景');
figure,imshow(P)
P=im2bw(P,0.35);
figure,imshow(P)
imwrite(P,'jietujieguo.jpg','jpg');
[x,y]=size(P)
P=imcrop(P,[10 10 y-20 x-20])
figure(9),imshow(P);
imwrite(P,'qiege.jpg','jpg');
[m,n]=size(P);
top=1;bottom=m;left=1;right=n; % init
while ((sum(P(top,:))==n )&&( top<=m))
top=top+1;
end
while( (sum(P(bottom,:))==n) && (bottom>1))
bottom=bottom-1;
end
while(( sum(P(:,left))==m) && (left<n))
left=left+1;
end
while ((sum(P(:,right))==m )&&( right>=1))
right=right-1;
end
dd=right-left;
hh=bottom-top;
Q=imcrop(P,[left top dd hh]);
%e=imcrop(P,[50 200 50 200]);
%e=imcrop(P,[50 200 50 200]);
figure,imshow(Q);
[x_m,y_n]=size(Q);
X_touying=sum((~Q))
xtouying=[0 0 0 0 0 0 0 0 0 0 0 0 0 0];
i=1;
j=1;
for i=1:y_n-1
if X_touying(i)~=0&&X_touying(i+1)==0||X_touying(i)==0&&X_touying(i+1)~=0;
xtouying(j)=i;
j=j+1;
end
end
E1=imcrop(Q,[1 1 xtouying(1) x_m]);
E2=imcrop(Q,[xtouying(2) 1 xtouying(3)-xtouying(2) x_m]);
E3=imcrop(Q,[xtouying(4) 1 xtouying(5)-xtouying(4) x_m]);
E4=imcrop(Q,[xtouying(6) 1 xtouying(7)-xtouying(6) x_m]);
E5=imcrop(Q,[xtouying(8) 1 xtouying(9)-xtouying(8) x_m]);
E6=imcrop(Q,[xtouying(10) 1 xtouying(11)-xtouying(10) x_m]);
E7=imcrop(Q,[xtouying(12) 1 y_n-xtouying(13) x_m]);
subplot(1,7,1);imshow(E1);
subplot(1,7,2);imshow(E2);
subplot(1,7,3);imshow(E3);
subplot(1,7,4);imshow(E4);
subplot(1,7,5);imshow(E5);
subplot(1,7,6);imshow(E6);
subplot(1,7,7);imshow(E7);
%======================把修正数据读入==============================
xiuzhenghanzi = imresize(E1, [110 55],'bilinear');
xiuzhengzimu = imresize(E2, [110 55],'bilinear');
xiuzhengzm_sz_1= imresize(E3,[110 55],'bilinear');
xiuzhengzm_sz_2 = imresize(E4,[110 55],'bilinear');
xiuzhengshuzi_1 = imresize(E5,[110 55],'bilinear');
xiuzhengshuzi_2 = imresize(E6,[110 55],'bilinear');
xiuzhengshuzi_3 = imresize(E7,[110 55],'bilinear');
%============ 把0-9 , A-Z以及省份简称的数据存储方便访问====================
hanzishengfen=duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
%因数字和字母比例不同。这里要修改
shuzizimu=duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
zimu = duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
shuzi = duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
%============================识别结果================================
i=1;%shibiezm_sz该函数识别数字有问题
jieguohanzi = shibiezm_sz(hanzishengfen,xiuzhenghanzi);shibiejieguo(1,i) =jieguohanzi; i=i+1;
jieguozimu = shibiezm_sz(zimu,xiuzhengzimu); shibiejieguo(1,i) =jieguozimu; i=i+1;
jieguozm_sz_1= shibiezm_sz(shuzizimu,xiuzhengzm_sz_1); shibiejieguo(1,i) =jieguozm_sz_1;i=i+1;
jieguozm_sz_2= shibiezm_sz(shuzizimu,xiuzhengzm_sz_2); shibiejieguo(1,i) =jieguozm_sz_2;i=i+1;
jieguoshuzi_1= shibiezm_sz(shuzi,xiuzhengshuzi_1); shibiejieguo(1,i) =jieguoshuzi_1;i=i+1;
jieguoshuzi_2= shibiezm_sz(shuzi,xiuzhengshuzi_2); shibiejieguo(1,i) =jieguoshuzi_2;i=i+1;
jieguoshuzi_3= shibiezm_sz(shuzi,xiuzhengshuzi_3); shibiejieguo(1,i) =jieguoshuzi_3;i=i+1;
%==========================对话框显示显示=============================================
shibiejieguo
msgbox(shibiejieguo,'识别结果');
u=uint8(zeros(1024,1));%zeros(M,N):M*N矩阵,所以zeros(1024,1)为一个1024个单元的数组。
ser_port1=serial('COM4');%分配com4口
ser_port1.InputBufferSize=4096;
ser_port1.OutputBufferSize=4096;
ser_port1.Timeout=10;
ser_port1.BaudRate=9600;
ser_port1.Parity='even';
ser_port1.StopBits=1;
fopen(ser_port1);
fwrite(ser_port1,'abcdefgh');%写函数,以二进制方式写
fprin
matlab识别简单字符串(7个字符).
5星 · 超过95%的资源 需积分: 10 17 浏览量
2011-09-16
17:01:06
上传
评论 3
收藏 4KB RAR 举报
xiemanrui
- 粉丝: 1
- 资源: 1