【发布时间】:2021-07-07 08:26:35
【问题描述】:
我尝试运行以下代码。代码应该从一个目录中读取 hdf5 文件,并为每个 hdf5 文件创建一个具有相同名称的 png 和一个 txt 文件(顺便说一句。我需要它作为 CNN YOLO 的输入)。 该代码符合我的描述,但仅适用于 20 张图片!我添加了 print(i) 以查看 for 循环是否正常工作......确实如此。它打印目录中的每个文件(超过 200 个文件)。但它只会创建 20 个 .png 和 20 个 .txt 文件。
def process_fpath(path1, path2):
sensor_dim = (101, 101)
onlyfiles = [f for f in os.listdir(path1) if isfile(join(path1, f))]
for i in onlyfiles:
if i.endswith(".hdf"):
print(i)
#cut ".hdf"
name = str(i[0:-5])
# create png
im = h5py.File(path1 + str(i), 'r')
labels_im = im['labels']
image = im['image']
plt.imsave(path2 + name + '.png', image)
# create txt
exp = np.column_stack((np.zeros(np.size(labels_im,0)) , labels_im[:,0]/sensor_dim[0], labels_im[:,1]/sensor_dim[1], labels_im[:,3]/sensor_dim[0], labels_im[:,3]/sensor_dim[0]))
np.savetxt(path2 + name + '.txt', exp, delimiter = ' ', fmt=['%d', '%8f', '%8f', '%8f', '%8f'])
continue
else:
continue
这是我的第一篇文章,如果有什么不对的地方,请告诉我。
【问题讨论】:
-
您计算输出文件名的表达式是否有可能产生重复项?这会导致后面的文件覆盖较早的同名文件,从而看起来只生成了一个文件。
标签: python data-science