
[英]How to read, format, sort, and save a csv file, without pandas
[英]How to read images in a file consecutively without sort functions?
我是图像处理的新手,我从视频中捕获帧,我想将它们转换为 arrays。 这些帧必须是连续的。 这是我的代码的一部分
folder = "/content/otherGrayscaleImage"
onlyfiles = [f for f in os.listdir(folder) if os.path.isfile(os.path.join(folder, f))]
print("Working with {0} images".format(len(onlyfiles)))
for i in range(len(onlyfiles)):
#do something
print(onlyfiles[i])
这是 output
Working with 328 images
241.png
312.png
27.png
149.png
42.png
296.png
182.png
99.png
64.png
120.png
102.png
208.png
79.png
325.png
......
如您所见,我的输出打印是随机的,并且不是从我的第一张图像1.png开始的。
这是排序后的输入 using.sorted() function。
1.png
10.png
100.png
101.png
.
.
199.png
2.png
我的最终目标是将 64 个连续的 2d 图像数组转换为 3d 数组,以实现 python 应该连续读取我的图像; 但事实并非如此。
我应该如何连续读取文件中的图像?
PS:使用诸如 sorted() 之类的排序函数无济于事
您需要一个自定义排序键。 手动解决方案是这样的:
onlyfiles.sort(key=lambda x: int(x[:x.index('.')]))
这不是一个稳健的解决方案。 如果您有任何文件在扩展名之前包含除整数以外的任何内容,或者缺少扩展名,这将引发错误。
幸运的是,有一个名为natsort的库可以很好地捕捉到人工排序的极端情况。 pip install natsort
之后,你可以做
from natsort import natsorted
onlyfiles = natsorted(onlyfiles)
强制性免责声明:我不隶属于 natsort,除非是一个满意的用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.