matlab 读取不同文件夹下不同图片,进行处理。

初学matlab,需要读取不同文件夹下不同图片,进行处理。搜到了处理代码,但是有点看不懂。我是要把不同文件夹下不同图片进行简单拼接。就是有图片A,图片B,图片C。得到D=... 初学matlab,需要读取不同文件夹下不同图片,进行处理。
搜到了处理代码,但是有点看不懂。
我是要把不同文件夹下不同图片进行简单拼接。就是有图片A,图片B,图片C。得到D=[A,B,C].并且要保存新产生的图片D。保存的循环我也不太懂。请把这个加进以下代码好吗,谢谢。

clc; clear all; close all;
str = 'D:\\Image\\';
pt = dir(str);
foldname = []; k = 0;
for i = 1 : length(pt)
if strcmp(pt(i).name, '.') | strcmp(pt(i).name, '..')
continue;
else
k = k + 1;
foldname{k} = pt(i).name;
end
end
for i = 1 : length(foldname)
temp = strcat(str, foldname{i}, '\\*.jpg');
temp1 = dir(temp);
for j = 1 : length(temp1)
jpgpath{i, j} = strcat(str, foldname{i}, '\\', temp1(j).name);
end
end
celldisp(jpgpath);
展开
 我来答
tianxiawulang
2013-10-15 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2695万
展开全部
不知道你从哪里找来这么一段代码,简单看了一下,这段代码的功能是,搜索指定文件夹的子目录中所有扩展名为jpg的文件,并把文件的路径名保存到jpgpath这样一个cell数组中,每行代表一个子目录。

存在以下问题:
1、这段代码并不包括你所说的拼接图片的功能。
2、第一个for循环的if语句没有考虑文件夹中除了子目录还可能有文件存在,这是一个很愚蠢的错误。
3、第二个for循环用来搜索各子目录中的jpg文件,并把文件的路径名保存在一个2维cell数组中。这个做法也是比较愚蠢的,因为各子目录中的jpg文件数量可能相差很多,这种存储方式不可取。

在现有代码基础上改写实现拼接图片的功能并不困难,但需要明确一些问题:
1、文件是否有顺序问题(按什么排序)?
2、纵向还是横向拼接?
3、如果各图片的宽(或高)不同,怎样处理?可选的方式至少有以下几种:
(1)按最大宽度,对于较小宽度的图片,不足部分以某种颜色填充;
(2)按最大宽度,对于较小宽度的图片,放大以适应最大宽度(又可区分是否锁定宽高比);
(3)按最小宽度,对于较大宽度的图片,剪切多余的部分(又可细分为保留哪个部分);
(4)按最小宽度,对于较大宽度的图片,缩小以适应最小宽度。
4、保存的文件怎样命名、保存在什么位置?可以考虑与子目录同名(加上jpg扩展名),存放在所指定的文件夹中(而不是子目录中)
追问
分析的好详细啊。我是把同大的图片横拼。是一个细胞的三张图片放在一起进行比较。按D=[A,B,C].来设。
1:请问该加在上面代码的哪段呢?就在结尾处接着写if循环吗?
2.处理完后的图片保存也是另外再写一段if来保存吗?

3:foldname = []; k = 0;这段,foldname为什么是个空矩阵。
才学很多不能理解,或能有一个更好的在d盘两个文件夹下同时选择两张不同图片进行合并的方法吗?感谢。
追答
每个子目录中都有A.jpg、B.jpg、C.jpg这三个文件吗?拼接后保存为同目录的D.jpg?
1、拼接是应该在结尾写,如果文件明确只有三个且文件名已知,不需要写循环,连上面代码中的第二个for循环也不需要。
2、处理完的图片直接保存就行了,不需要if。
3、那个是初始化,具体的值在循环里面赋。
如果选择不同文件夹的图片,比较简单的做法是用两次uigetfile对话框让用户自行选择。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式