画像処理 - 大きな画像をスライスして名前を変更する

from cv2 import cv2
import numpy as np
import random

pic_path = 'test.png'  # 分割的图片的位置 @这是你需要修改的地方
pic_target = './target/'  # 分割后的图片保存的文件夹 @这是你需要修改的地方
# 要分割后的尺寸
cut_width = 1000
cut_length = 1000
# 读取要分割的图片,以及其尺寸等数据
picture = cv2.imread(pic_path)
(width, length, depth) = picture.shape
# 预处理生成0矩阵
pic = np.zeros((cut_width, cut_length, depth))
# 计算可以划分的横纵的个数
num_width = int(width / cut_width)
num_length = int(length / cut_length)
# for循环迭代生成
for i in range(0, num_width):
    for j in range(0, num_length):
        name_ID = random.randint(1, 10000000)
        pic = picture[i * cut_width: (i + 1) * cut_width, j * cut_length: (j + 1) * cut_length, :]
        # result_path = pic_target +str(name_ID) + '.jpg'
        result_path = pic_target + '{}_{}.jpg'.format(i + 1, j + 1)
        cv2.imwrite(result_path, pic)

print("done!!!")

上記は大きな画像をスライスする場合です

以下はスライスした画像の名前を変更して並べ替える場合です

import os


class BatchRename():
    '''
    批量重命名文件夹中的图片文件,就是用的这个文件
    '''

    def __init__(self):
        self.path = r'C:\Users\15840\Desktop\cut\选出来的图片'  # 表示需要命名处理的文件夹

    def rename(self):
        filelist = os.listdir(self.path)  # 获取文件路径
        total_num = len(filelist)  # 获取文件长度(个数)
        i = 35  # 表示文件的命名是从1开始的,这里可以自己进行定义
        for item in filelist:
            if item.endswith('.jpg'):  # 初始的图片的格式为jpg格式的(或者源文件是png格式及其
                # 他格式,后面的转换格式就可以调整为自己需要的格式即可)
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path), '' + str(i) + '.jpg')  # 处理后的格式也为jpg格式的,当然这里可以改成png格式
                # 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()

コードを転載します、長すぎてソースが思い出せません、バグがあっても修正しません、単なる学習記録です。

おすすめ

転載: blog.csdn.net/weixin_59978471/article/details/129874847