1.批量修改图片文件名
files = os.listdir("F:\\dataset\\tomato_data\\20230417")#原来文件夹的路径
i = 0
for file in files:
original = "F:\\dataset\\tomato_data\\20230417" + os.sep + files[i]
#修改后放置图片的路径 F:/ns,也可将 img_ 换成其他标注
new = "F:\\dataset\\tomato_data\\tomato_datasets" + os.sep + "img_" + str(i + 543) + ".jpg"
os.rename(original, new)
i += 1
2.压缩图片(两种方法:opencv和PIL)
import cv2
img=cv2.imread("C:\\Users\\Yellow\\Desktop\\img_1.jpg",1)
cv2.imwrite("C:\\Users\\Yellow\\Desktop\\img_1_12.jpg",img,[cv2.IMWRITE_JPEG_QUALITY,25])
from PIL import Image
import os,shutil
img2 = Image.open("C:\\Users\\Yellow\\Desktop\\img_1.jpg")
img2.save("C:\\Users\\Yellow\\Desktop\\img_1_2.jpg", quality=75, subsampling=0, dpi=(300.0, 300.0))
3.批量压缩图片(PIL)
from PIL import Image
import os, shutil
# 图片压缩批处理
def compressImage(srcPath, dstPath):
for filename in os.listdir(srcPath):
# 如果不存在目的目录则创建一个,保持层级结构
if not os.path.exists(dstPath):
os.makedirs(dstPath)
# 拼接完整的文件或文件夹路径
srcFile = os.path.join(srcPath, filename)
dstFile = os.path.join(dstPath, filename)
# 如果是文件就处理
if os.path.isfile(srcFile):
try:
dImg = Image.open(srcFile)
dImg.save(dstFile, quality=75, subsampling=0, dpi=(300.0, 300.0))
print(dstFile + " 成功!")
except Exception:
print(dstFile + "失败!")
# 如果是文件夹就递归
if os.path.isdir(srcFile):
compressImage(srcFile, dstFile)
if __name__ == '__main__':
# 遍历待加入图片
path = os.walk("./prepare")
for root, dirs, files in path:
for f in files:
shutil.move(os.path.join(root, f), os.path.join('./finish', f)) # 移动文件
# 遍历删除压缩图片
path = os.walk("./compress")
for root, dirs, files in path:
for f in files:
os.remove(os.path.join(root, f))
# 遍历压缩图片
compressImage("./finish", "./compress")
#在代码对应的文件夹下建立三个文件夹,prepare:存放准备压缩的图片;compress:压缩后的图片存放于此;finish:压缩过的图片原图存放于此
参考(搬运)博文: