python - 如何根据图像名称上的数字顺序从文件夹加载图像
问题描述
我想制作一个程序,根据顺序的帧号每秒显示 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)
解决方案
我想你必须 d0 如下
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)
然后遍历它并显示图像
推荐阅读
- angular - Angular 六为@Output EventEmitter 设置初始值
- python - 使用 DX-Analytics 评估亚洲期权的正确语法是什么
- java - 如何使用杰克逊将树 json 对象映射到 List<>
- kotlin - 为什么 kscript 不喜欢分号?
- javascript - make the first part of a text area readonly
- asynchronous - 等待 IObservable 时出现 System.ArgumentNullException
- jasper-reports - JasperReports 导出的 pdf 中的字体错误
- android - 数据由异步任务加载的 ViewModel
- c# - 将 DataGridView 的特定单元格设置为“从左到右”对齐
- php - PHP如何从两个表中获取数据