python 批量裁剪、重命名、读取并显示文件夹中图片

对文件夹中的图片进行批量重命名、裁剪到一定尺寸、循环读取并显示,是常见的需求之一。

以下的Python代码段,可以帮助你完成这个任务。

# 对文件夹中图片批量进行重命名 

# -*- coding:utf8 -*-
import os

class BatchRename():
    """
    批量重命名文件夹中的图片文件
    """
    def __init__(self):
        self.path='/home/xu/caffe/data/mydata/test_neg'  #表示需要命名处理的文件夹
        
    def rename(self):
        filelist=os.listdir(self.path)  #获取文件路径
        total_num=len(filelist)  #获取文件长度(个数)
        i=1  #表示文件的命名是从1开始的
        for item in filelist:
            if item.endswith('.jpg'):  #转换格式就可以调整为自己需要的格式即可
                src=os.path.join(os.path.abspath(self.path),item)
                dst=os.path.join(os.path.abspath(self.path),''+str(i)+'.jpg')
                #dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')    
                #这种情况下的命名格式为0000000.jpg形式,可以自定义格式
                try:
                    os.rename(src,dst)
                    print('converting %s to %s ...' % (src, dst))
                    i=i+1
                except:
                    continue
        print('total %d to rename & converted %d jpgs' % (total_num, i))
        
if __name__ == '__main__':
    demo = BatchRename()
    demo.rename()

# 对文件夹中图片统一裁剪(resize)成某一尺寸

// python code
import os
import cv2
''' 设置图片路径,该路径下包含了14张jpg格式的照片,名字依次为0.jpg, 1.jpg, 2.jpg,...,14.jpg'''
DATADIR="D:\Code\ToolBox"
'''设置目标像素大小,此处设为300'''
IMG_SIZE=300
'''使用os.path模块的join方法生成路径'''
path=os.path.join(DATADIR) 
'''使用os.listdir(path)函数,返回path路径下所有文件的名字,以及文件夹的名字,
例如,执行下行代码后,img_list是一个list,值为['0.jpg','1.jpg','10.jpg','11.jpg','12.jpg','13.jpg','14.jpg',
'2.jpg','3.jpg','4.jg', '5.jpg', '6.jpg', '7.jpg', 
'8.jpg', '9.jpg'],注意这个顺序并没有按照从小到大的顺序排列'''
img_list=os.listdir(path)
ind=0
for i in img_list:
'''调用cv2.imread读入图片,读入格式为IMREAD_COLOR'''
    img_array=cv2.imread(os.path.join(path,i),cv2.IMREAD_COLOR)
    '''调用cv2.resize函数resize图片'''
    new_array=cv2.resize(img_array,(IMG_SIZE,IMG_SIZE))
    img_name=str(ind)+'.jpg'
    '''生成图片存储的目标路径'''
    save_path='D:\\Code\\resized\\'+str(ind)+'.jpg'
    ind=ind+1
    '''调用cv.2的imwrite函数保存图片'''
    cv2.imwrite(save_path,new_array)

# 批量读取并显示文件夹内图片(jupyter notebook下;也可以download as .py)

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import os

path ='/home/gnss/Desktop/imageshow'
filelist = os.listdir(path)
total_num = len(filelist)
#print(type(total_num))
i = 2

for item in filelist:
    lena = mpimg.imread("/home/gnss/Desktop/imageshow/{}.jpg".format(i))
    lena.shape
    plt.imshow(lena)
    plt.axis('off')
    plt.show()
    i = i+1

python 批量裁剪、重命名、读取并显示文件夹中图片_第1张图片

你可能感兴趣的:(python 批量裁剪、重命名、读取并显示文件夹中图片)