matlab图片数据库读取,MATLAB无法读取图像数据库问题

本帖最后由 wx_taVNbhNT 于 2020-11-6 16:54 编辑

求问一下我需要读取一批图像,程序运行报错,我这是哪里出了问题?求大神解惑

附上程序:(版本R2020b)

clear

clc

%统一图片大小

y=28;

z=28;

%导入数据库各数字个数

geshu=11;

zongshu=geshu*2;

%导入数据库

u=[];

picSize=[y,z];

shang=1;xia=1;zuo=1;you=1;

%预处理数据库,要求图片黑底白色数字

for s=0:9

for t=0:geshu-1

q=im2double(imread(strcat('E:\MATLAB\',num2str(s),'_', num2str(t),'.jpg')));

q=im2bw(q,0.1);

[heng,zong]=size(q);

hs=sum(q);

hs0=sum(q,2);  %这里表示行之和,这时应该是竖着写了两个数字及其以上,除了那种奇葩写得贼长那种

hs1=hs0';       %将行之和转置

while(hs1(xia)==0&&xia

xia=xia+1;

end

shang=xia;

while(hs1(shang)>0&&shang

shang=shang+1;

end

while(hs(zuo)==0&&zuo

zuo=zuo+1;

end

you=zuo;

while(hs(you)>0&&you

you=you+1;

end

q=q(xia:shang,zuo:you);

q=imresize(q,picSize);

u=[u,q];

shang=1;xia=1;zuo=1;you=1;

end

end

d=[];

%打开摄像头

obj = videoinput('winvideo',1,'MJPG_640x480');

h=preview(obj);

start(obj);

figure;

while ishandle(h)

frame = getsnapshot(obj);  % 获取帧

%图像增强

% h=ones(5,5)/25; %过滤器h

% I=imfilter(I,h);%真彩色增强

% figure('name','真彩色增强');imshow(I);title('真彩色增强');

I1=rgb2gray(frame); % RGB图像转灰度图像

I1=imadjust(I1,[0.3,0.7],[]);

I1=medfilt2(I1);

%  figure,imshow(I1);title('中值滤波');

%边缘检测:sobel,roberts,canny,prewitt等

I2=edge(I1,'roberts',0.25,'both'); %边缘检测算法,强度小于阈值0.15的边缘被省略掉,'both'两个方向检测(缺省默认)

% figure('name','边缘检测'),imshow(I2);title('robert算子边缘检测')

se=[1];

I3=imerode(I2,se);% 腐蚀Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象

% figure('name','腐蚀后图像'),imshow(I3);title('腐蚀后的图像');

se=strel('rectangle',[30,30]);% 25X25的矩形 strel???

I4=imclose(I3,se);% 用25*25的矩形对图像进行闭运算(先膨胀后腐蚀)有平滑边界作用

%  figure('name','平滑处理'),imshow(I4);title('平滑图像的轮廓');

I5=bwareaopen(I4,800);% 从二进制图像中移除所有少于2000像素的连接对象,消失的是连续的白色像素数量少于2000的字符

% figure('name','移除小对象'),imshow(I5);title('从对象中移除小对象');

%裁剪程序

[r,c]=find(I5);%找出I5中即只剩下数字的图里白元素所在行列,r记录行,c记录列

nextresult=I5(min(r) :max(r),min(c):max(c));

subplot(121),imshow(nextresult);title('抓取的数字图');

cj1=min(r) ;%记录裁剪尺寸

cj2=max(r);

cj3=min(c);

cj4=max(c);

[g,w]=size(nextresult);

[splitfs,points]=shuziqiege(nextresult,r,c,g,w);

xs=[splitfs,points];

dechushuzi=[];

jishu0=zeros(1,geshu);jishu1=ones(1,geshu);jishu2=ones(1,geshu)*2;jishu3=ones(1,geshu)*3;jishu4=ones(1,geshu)*4;jishu5=ones(1,geshu)*5;

jishu6=ones(1,geshu)*6;jishu7=ones(1,geshu)*7;jishu8=ones(1,geshu)*8;jishu9=ones(1,geshu)*9;

jishuqi=[jishu0,jishu1,jishu2,jishu3,jishu4,jishu5,jishu6,jishu7,jishu8,jishu9];

x=1;

for m_520=1:size(xs,2)-1

p=xs{m_520};

p=imresize(p,picSize);

for n_520=1:zongshu

nn=(n_520-1)*z+1;

ff=n_520*z;

d=u(1:y,nn:ff);   %取识别库一张图所化为的矩阵

matchrs(n_520)=corr2(p,d);

end

[~,k]=max(matchrs);

dechushuzi(x)=jishuqi(k);

%     lastresult=strcat(lastresult, fonts(k));

x=x+1;

end

x=1;

%开始标记

label_str = ['The number is: ' num2str(dechushuzi,'%d') ''];

cj5=cj2-cj1;

cj6=cj4-cj3;

cj=[cj3 cj1 cj6 cj5];

rgb = insertObjectAnnotation(frame, 'rectangle', cj, label_str,'textboxopacity', 0.9, 'fontsize', 18,'color','r');

subplot(122),imshow(rgb),title('数字识别系统');

drawnow

end

MATLAB错误指令.PNG

(22.82 KB, 下载次数: 0)

2020-11-6 16:41 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

05d470efe123358047269e68a60d2fc0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值