我有一堆图片(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"吗?