algorithm - 如何在不同目录的多个图像中读取和运行算法?

标签 algorithm matlab loops computer-vision

我一直在研究分割算法(均值漂移)。最大的问题与图像有关。它们很大,有数百个物体。 该算法功能强大,但同时计算量大。 所有这一切意味着每张图像至少需要 1 小时来分割,而我有 150 张图像。

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

我在目录中有图像,如下所示:

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')

最佳答案

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

a = 1:150;

主要解决方案

现在这里有一个 1 类轮应该为你做。

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} 访问每个图像。

备用循环解决方案

为图像创建一个单元格。

I = cell(1,length(a));

然后创建一个循环来预填充索引。然后调用imread

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

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

b =
0001
b =
0002
b =
0003
...

关于algorithm - 如何在不同目录的多个图像中读取和运行算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856334/

相关文章:

返回给定数字所有可能组合的 C++ 算法

c# - 收集DAG的所有路径

matlab - Matlab readtable 可以处理以可变数量的空格分隔的文本文件吗?

java - 在不使用 matlab 头文件和库的情况下编写 MAT 文件

c++ - 在编译时确定最小共同祖先

objective-c - NSMutableArray 真的是堆栈或队列的良好后备存储吗?

matlab - 求图中所有顶点之间的最短路径,无需给出起点或终点

python - 如何在 python 中解决这个问题(for 和 while 循环)?

php - 仅当数据库中不存在数据时才插入

javascript - 在javascript中循环实例化类使用最后一个值