Python 按照图片名称顺序(升序)读取文件夹中图片处理

在大批量处理数据集图片时,使用Python中的os.listdir(),发现读取的图片不是按照预想的顺序读取,是乱序的,这… … … …忍不了,为了解决这个问题,总结了Python 按照图片名称顺序(升序)读取文件夹中图片处理的方法。

乱序的样纸

直接使用os.listdir()读取处理后乱序的样纸如下:

在这里插入图片描述

解决办法

首先图片名称得是有序的,具体关于批量修改图片名的方法,参考另外一篇博客添加链接描述

加入下面这条代码即可有序读取图片处理:

file.sort(key=lambda x:int(x.split('.')[0]))

示例代码

具体的位置见下:

file = os.listdir(path=input_dir)
file.sort(key=lambda x:int(x.split('.')[0]))

for item in file:
    img = cv2.imread(os.path.join(input_dir, item),cv2.IMREAD_GRAYSCALE)

下面是一段使用局部直方图均衡化方法,按图片名顺序批量处理文件夹中图片的例子:

import cv2
import os
import sys

# 需要读取的路径

input_dir = 'runs/detect/INF_2023.3.3_405_Original_select2 Extract/roi'
output_dir = 'runs/detect/INF_2023.3.3_405_Original_select2 Extract/roi Enhanse Enhance'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

index = 1

file = os.listdir(path=input_dir)
# file.remove('.DS_Store')
file.sort(key=lambda x:int(x.split('.')[0]))

for item in file:
    img = cv2.imread(os.path.join(input_dir, item),cv2.IMREAD_GRAYSCALE)
    print('Being processed picture %s' % index+"  "+item)

    # 灰度转换
    gray = img  # cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 局部直方图均衡化处理
    clahe = cv2.createCLAHE(clipLimit=2, tileGridSize=(10, 10))  ## 限制对比度自适应直方图均衡化

    # 将灰度图像和局部直方图相关联, 把直方图均衡化应用到灰度图
    result = clahe.apply(gray)

    # 保存图片
    cv2.imwrite(output_dir + '/' + str(index) + '.jpg', result)
    index += 1

    key = cv2.waitKey(30) & 0xff
    if key == 27:
        sys.exit(0)

按顺序处理后的样纸如下:

在这里插入图片描述

总结

以上就是使用Python按照图片名称顺序(升序)读取文件夹中图片处理方法,希望能帮助到学者,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_40280673/article/details/129373487