本人小白,自己编了个代码,能把一张图片二值化,然后读取图中黑色区域的像素点数,但我想实现批量读取,然后处理的目的,求大神帮忙
I=imread('top051.bmp');
Zmax=max(max(I));
Zmin=min(min(I));
TK=(Zmax+Zmin)/2;%初始阈值
flag=1;
[m,n]=size(I);
while(flag)
fg=0;
bg=0;
fgsum=0;
bgsum=0;
for i=1:m
for j=1:n
tmp=I(i,j);
if(tmp>=TK)
fg=fg+1;
fgsum=fgsum+double(tmp);
else
bg=bg+1;
bgsum=bgsum+double(tmp);
end
end
end
u1=fgsum/fg;
u2=bgsum/bg;
TKTmp=uint8((u1+u2)/2);
if(TKTmp==TK)
flag=0;
else
TK=TKTmp;
end
end
BCT = sum(newI (:)==0)
有可能的话,请好心朋友在这个基础上做些修改,已达到批量读取图片,并批量输出黑色区域像素点数的目的,在此谢过了,图片名称是由top001、top002、top003..........top452,这样的顺序编排的
% 你的代码没有仔细看,有问题在说吧,结果在R中
n = 452;运行完是这样,您能不能帮我调试一下,毕业论文急用啊,谢谢了。
这个发的是什么意思?您能不能在我的那个基础上直接给我添加进去,我基本不会修改。。。见笑了
追答%% 哦!好的。
n = 452;你方便在上面的基础上帮我修改下嘛?我实在小白,不会整,谢谢了
追答function a=(pictureName)
I=imread(pictureName);
Zmax=max(max(I));
Zmin=min(min(I));
TK=(Zmax+Zmin)/2;%初始阈值
flag=1;
[m,n]=size(I);
while(flag)
fg=0;
bg=0;
fgsum=0;
bgsum=0;
for i=1:m
for j=1:n
tmp=I(i,j);
if(tmp>=TK)
fg=fg+1;
fgsum=fgsum+double(tmp);
else
bg=bg+1;
bgsum=bgsum+double(tmp);
end
end
end
u1=fgsum/fg;
u2=bgsum/bg;
TKTmp=uint8((u1+u2)/2);
if(TKTmp==TK)
flag=0;
else
TK=TKTmp;
end
end
BCT = sum(newI (:)==0)
end
怎么用MATLAB批量读取一个文件夹里面的图片 并进行处理呢?
1 图像按编号命名:1.jpg, 2.jpg,...,n.jpg 2 循环读图 I=cell(1,n);for i=1:n imageName=strcat(num2str(i),'.jpg');I{i} = imread(imageName);end 3 处理图像 --- 如果图像很多,那么最好这样,第二步和第三步合并 for i=1:n imageName=strcat(num2str(i),'.jpg');I = ...
如何用matlab批量读取图片?
1 图像按编号命名:1.jpg, 2.jpg,...,n.jpg 2 循环读图 I=cell(1,n);for i=1:n imageName=strcat(num2str(i),'.jpg');I{i} = imread(imageName);end 3 处理图像 --- 如果图像很多,那么最好这样,第二步和第三步合并 for i=1:n imageName=strcat(num2str(i),'.jpg');I ...
【求助!】matlab如何批量读写和处理图片
读取与处理的过程是这样的:% dir、struct 结构用法,还有sprintf 函数、简单流程控制listing = dir('d:\\d:\\pic\\*.jpg');for i = 1:N imgName = listing(i).name; imgData = imread(imgName); % 处理 b = rgb2gray(imgData); imgData = (b, graythresh(b)); % ...
matlab imread 怎么一次读取多张图片啊?
matlab的Imread不可以一次读取多张图片,因为每一张图片都是以矩阵的形式读入matlab的。每一张图片都需要用一个变量来保存。如果想批量读取图片可以使用循环设置变量,并导入,使用eval()执行。
matlab imread()批量读取图片
imname = dir('.\\*.bmp');%读入文件夹下的全部图像 im_num = length(imname);% 文件夹中图像的个数 im_temp = imread(imname(1).name,'bmp');%读入第一幅图像 [height,width] = size(im_temp);%得到图像的尺寸 DB(:,:,a) = zeros(height,width,im_num,'uint8');读入全部图像...
怎样用matlab读取一个文件夹下的多个子文件夹中的多个jpg图片,急用...
这样:imgPath = 'E:\/imageData\/'; % 图像库路径 imgDir = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件 for i = 1:length(imgDir) % 遍历结构体就可以一一处理图片了 img = imread([imgPath imgDir(i).name]); %读取每张图片 end ...
求助各位大神,如何用matlab的M文件实现批量载入图片并转化为二值图像...
这只是批量读入图像从matlab论坛找的,把a.m文件直接放在附件1文件夹里直接运行,调试通过,转化为二值图像,我觉要用图像的字符识别,通过字符的结构进行度量,imname = dir('.\\*.bmp');im_num = length(imname);im_temp = imread(imname(1).name,'bmp');[height,width] = size(im_temp)...
matlab批量读取图片 要求不占很大内存,一张读完释放空间
我不知道你的图片怎么编码的,我反正是批量处理图片的时候都是命名为1.jpg,2.jpg...这样写的时候 for i=1:n s=num2str(i);I=imread(s+".jpg");...end 就可以。你 要求不占很大内存,一张读完释放空间,那么每一句imread后面你对图片操作完,后面跟一句clear I就可以 ...
MATLAB+PSYCHTOOLBOX示例(十三)——多图片读取及随机化
对于图片批量导入和随机化的具体实现,本文提供两种实用方法:其一,直接利用Psychtoolbox提供的工具,根据设定的参数生成所需刺激。其二,采用cell数组提前读取图片,实验时调用以实现高效管理。第一种方法虽有一定学习门槛,但通过本文的解释,读者能迅速掌握其应用。构建类似EPrime中List列表,将图片参数与文件...
matlab批量读取图片 要求不占很大内存,一张读完释放空间
我不知道你的图片怎么编码的,我反正是批量处理图片的时候都是命名为1.jpg,2.jpg...这样写的时候 for i=1:n s=num2str(i);I=imread(s+".jpg");...end 就可以。你 要求不占很大内存,一张读完释放空间,那么每一句imread后面你对图片操作完,后面跟一句clear I就可以 ...