如何读取多个图像和创建一个3D矩阵与他们



我有一堆图片(300张图片,400 X 400像素),文件名如下:

    bmp 001.
  • bmp 002.
  • bmp 003.

首先,我尝试阅读其中一个,例如使用imread我得到一个(400L, 400L, 3L)矩阵,问题是3L(我认为是RBG格式),所以这里的问题是:我如何才能读取它们并获得我需要处理它们的(400L, 400L, 1L)矩阵?

其次,我尝试使用如下循环读取300张图像:

data = np.zeros((400,400,300))
for i in range(300):
    data[:,:,i] = imread('{0}.bmp'.format(i))

但它不起作用,很可能我的代码是错误的。实际上,我想要将每个(300)图像数据(400 X 400)连接到一个(400 X 400 X 300)的矩阵中。

当尝试使用

data[:,:,i] = imread('{0}.bmp'.format(i))

搜索'1.bmp'而不是'001.bmp',但由于列表从000到299,我遇到了一个问题,我不能写'00{0}.bmp'.format(i)来完成文件名,因为对于两位和三位数字,我得到了'0012.bmp''00123.bmp'

好吧,下班后,我要做这个

arrays = []
for number in range(0, 299):
    numstr = str(number).zfill(3)
    fname = numstr + '.bmp'
    a = imread(fname, flatten=1)
    arrays.append(a)
data = np.array(arrays)

这段代码工作得很好。谢谢你给我提示!

首先,您是正确的,最后一个维度是颜色通道。我假设你想要一个灰度图像,你可以通过:

data = imread(fname, flatten=1)

来自imread文档

第二,循环的问题可能是由于一些事情造成的。首先,我在你的帖子中没有看到缩进,所以确保在你实际要运行的代码中有循环体。其次,代码的扩展名为"。txt"。你确定你不想要"。bmp"吗?

相关内容

  • 没有找到相关文章

最新更新