【问题标题】:How to load images from a folder in sequence based on the number on the images name如何根据图像名称上的数字顺序从文件夹加载图像
【发布时间】:2019-03-18 06:46:38
【问题描述】:

我想制作一个程序,根据 sequence 中的帧号每秒显示 1 x 1 的图像(图像来自视频,我已经将其更改为具有 292 帧的图像 .jpg ),但是有一些错误使我的程序一个一个地显示它,但不是按顺序显示,有时它会跳转(从第 1 帧到第 100 帧),有时它不会。

import glob
import cv2

img_location = 
'E:\\User\\Programming\\Python\\Work\\asd\\*.jpg'
img_loc = sorted(glob.glob(img_location))
for img in img_loc:
    print('processing %s...' % img,)
    img = cv2.imread(img, 0)
    cv2.imshow("img",img)
    cv2.waitKey(250)

【问题讨论】:

  • 听起来像您按词典对数字进行排序。
  • sorted() 按字典顺序对字符串进行排序,1,10,100,11,12 ... 等等,您需要从文件名中提取数字并将其排序为整数。
  • 我只用数字命名了我的图像
  • 还是字符串。必须转换为整数
  • 感谢您的建议,我会尝试您的建议!

标签: python image opencv video


【解决方案1】:

另一种方法是使用后缀 0 命名您的文件。例如:001、002、... 100、101、... 250

【讨论】:

    【解决方案2】:

    我猜你必须做如下的事情

    import glob
    import cv2
    import numpy as np
    
    img_location = 'E:\\User\\Programming\\Python\\Work\\asd\\*.jpg'
    img_loc = sorted(glob.glob(img_location))
    img_numbers = [int(iloc.split(".")[0]) for iloc in img_loc]
    sorted_indices = np.argsort(img_numbers)
    
    for sorted_img_idx in sorted_indices:
        print('processing %s...' % img_loc[sorted_img_idx],)
        img = cv2.imread(img_loc[sorted_img_idx], 0)
        cv2.imshow("img",img)
        cv2.waitKey(250)
    

    它的作用是假设文件命名如下: 1.jpg 2.jpg 等等,然后我们剥离 .jpg,并将“1”转换为 int,然后应用 argsort,返回一个数组对应于排序数组的索引,然后我们只需遍历所有索引并显示顺序图像

    另一种更简单的方法:

    如果命名约定如上所述,那么只需这样做

    base_path = 'E:\\User\\Programming\\Python\\Work\\asd\\
    img_names = [ base_path + str(img_number) + ".jpg"  for img_number in range(1,101)
    

    然后遍历它并显示图像

    【讨论】:

      【解决方案3】:

      ffmpeg 可以播放带有图片的文件夹。 您可以创建:

      cap = cv2.VideoCapture('E:\\User\\Programming\\Python\\Work\\asd\\%d.jpg', cv2.CAP_FFMPEG)
      

      cap = cv2.VideoCapture('E:\\User\\Programming\\Python\\Work\\asd\\%d.jpg', cv2.CAP_IMAGES)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 2011-07-07
        • 2016-09-03
        相关资源
        最近更新 更多