首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不同目录下的多幅图像中读取和运行算法?

如何在不同目录下的多幅图像中读取和运行算法?
EN

Stack Overflow用户
提问于 2015-04-25 03:54:58
回答 1查看 96关注 0票数 2

我一直在研究一个分割算法(mean-shift)。最大的问题与图片有关。它们很大,有成百上千的物体。这个算法很强大,但同时也是计算密集型的。所有这些都表明,每个图像至少需要1个小时才能分割,我有150张图像。

我整天都在工作,我想在白天运行这个算法,而不是担心为每个单独的图像运行算法。同时将结果保存在同一文件夹中。

我将图像放在一个目录中,如下所示:

代码语言:javascript
复制
C: Folder1/Folder2/Folder3/0001/0001.png
C: Folder1/Folder2/Folder3/0002/0002.png
C: Folder1/Folder2/Folder3/0003/0003.png
...

我是这样读图片的:I=imread('C: Folder1/Folder2/Folder3/0001/0001.png')

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 04:14:42

首先创建索引图像的向量1-150。

代码语言:javascript
复制
a = 1:150;

主要解决方案

现在,这里有一个1行代码,应该可以帮你做到这一点。

代码语言:javascript
复制
A = arrayfun( @(x) sprintf( '%04d', x ), a, 'UniformOutput', false );
I = cellfun( @(b) imread( ['C: Folder1/Folder2/Folder3/' b '/' b '.png'] ), A, 'UniformOutput', false );

arrayfun行将用零填充向量a,并将其转换为字符串单元格。cellfun行将执行imread操作并将其存储到矩阵I中。

然后,您可以使用I{i}访问每个图像。

备用环路解决方案

为图像创建单元格。

代码语言:javascript
复制
I = cell(1,length(a));

然后创建一个循环,该循环将预先填充索引。然后调用imread

代码语言:javascript
复制
for i = a
    b = sprintf( '%04d', i );
    I{i} = imread( ['C: Folder1/Folder2/Folder3/' b '/' b '.png'] );
end

然后,您可以使用第一个元素的I{1}来访问每个图像。作为参考,这是运行循环时每个b的值。

代码语言:javascript
复制
b =
0001
b =
0002
b =
0003
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29856334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档