【发布时间】:2020-12-10 16:16:00
【问题描述】:
我从文件夹中读取了以下代码。我的视频帧以 frame0.jpg、frame1.jpg 格式存储。我需要按顺序读取帧序列,我在代码下方运行,但我检索的输出不是我想要的。
filenames = [img for img in glob.glob("video-frames/*.jpg")]
filenames.sort()
images = []
for img in filenames:
n= cv2.imread(img)
images.append(n)
print(img)
收到的输出:
video-frames\frame0.jpg
video-frames\frame1.jpg
video-frames\frame10.jpg
video-frames\frame100.jpg
video-frames\frame101.jpg
我希望输出按如下顺序读取帧
video-frames\frame0.jpg
video-frames\frame1.jpg
video-frames\frame2.jpg
谢谢
【问题讨论】:
-
您可以使用它们被创建的时间。
filenames = sorted(filenames, key=os.path.getctime)或filenames.sort(key=os.path.getctime),如果它们的生成顺序正确。 -
@Thymen,感谢您的精彩建议。请您发布您的答案,以便其他人受益以获得更好的知名度吗?
-
文件通常按字母顺序从磁盘读取。这意味着在 xxx1.jpg 之前读取 xxx10.jpg。因此,您应该在文件名中添加前导零。然后按字母顺序阅读它们将加载 xxx01、xxx02、... xxx10... 直到 xxx99。如果超过 99,请使用更多前导零
标签: python python-3.x opencv glob