下面展示一些 代码
。
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 28 22:59:37 2021
@author: dell
"""
# !/usr/bin/python
# -*- coding:utf-8 -*-
import os
import cv2
outer_path = 'D:/11/H30000/mightysat/+X/0.28/' # 路径不能包含中文
#outer_path = 'C:/Users/Lenovo/Desktop/xx/' # 路径不能包含中文
folderlist = os.listdir(outer_path) # 列举文件夹
for folder in folderlist:
inner_path = os.path.join(outer_path, folder)
total_num_folder = len(folderlist) # 文件夹的总数
print('total have %d folders' % (total_num_folder)) # 打印文件夹的总数
filelist = os.listdir(inner_path) # 列举图片
i = 1
for item in filelist:
total_num_file = len(filelist) # 单个文件夹内图片的总数
if item.endswith('.png'):
src = os.path.join(os.path.abspath(inner_path), item) # 原图的地址
image_path = src
# 使用pillow读取图片,获取图片的宽和高
img = cv2.imread(image_path)
sp = img.shape
# print(sp)
img_width = sp[1] # 图片宽度
img_height = sp[0] # 图片高度
# print("width -> {}, height -> {}".format(img_width, img_height))
if img_width > 1024:
left = (img_width - 1024) // 2
# print(left)
right = left + 1024
#print(right)
if img_height > 700:
upper = (img_height - 700) // 2
lower = upper + 700
else:
upper = 0
lower = 700
# print(upper, lower)
crop = img[upper:lower, left:right] # (left, upper, right, lower)
constant = cv2.copyMakeBorder(crop, 162, 162, 0, 0, cv2.BORDER_CONSTANT, value=(0, 0, 0))
# cv2.imshow('constant',constant),cv2.waitKey(0),cv2.destroyAllWindows()
dst = os.path.join(os.path.abspath(inner_path), '000' + str(
i) + '.png') # 新图的地址(这里可以把str(folder) + '_' + str(i) + '.jpg'改成你想改的名称)
try:
os.rename(src, dst)
#print('converting %s to %s ...' % (src, dst))
i += 1
except:
continue
cv2.imwrite(dst, constant)
print('total %d to rename & converted %d jpgs' % (total_num_file, i))