OpenCV:图像批量、任意比例裁剪

1 介绍

图像剪切在深度学习扩展训练数据集中有着非常广泛的用处。本文主要分享最近实现的图像批量剪切python源代码。希望对你有所帮助!

将裁剪之后的图像进行拼接的源代码:https://blog.csdn.net/u013419318/article/details/102805476

 2 源代码

import os
import matplotlib.pyplot as plt
import cv2
import numpy as np

n = 1  # 拆分多少行?
m = 20  # 拆分多少列?

def divide_imgs(img_path, img_name, save_path):
    '''
    拆分图像
    :param img_path:
    :param img_name:
    :param save_path:
    :return:
    '''
    imgg = img_path + img_name
    img = cv2.imread(imgg)
    #   img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    h = img.shape[0]
    w = img.shape[1]
    print('h={},w={},n={},m={}'.format(h, w, n, m))
    dis_h = int(np.floor(h / n))
    dis_w = int(np.floor(w / m))
    num = 0
    for i in range(n):
        for j in range(m):
            num += 1
            print('i,j={}{}'.format(i, j))
            sub = img[dis_h * i:dis_h * (i + 1), dis_w * j:dis_w * (j + 1), :]
            save_imgs_path = save_path + '\\' + str(img_name.split('.')[0]) + '\\'
            if not os.path.exists(save_imgs_path):
                os.makedirs(save_imgs_path)
            cv2.imwrite(save_imgs_path +  str(img_name.split('.')[0]) + '_{}.png'.format(num), sub)


if __name__ == '__main__':

    img_path = 'I:\\LONGBO\\ZXB_data\\test\\no_div\\'
    save_path = 'I:\\LONGBO\\ZXB_data\\test\\div\\'
    img_list = os.listdir(img_path)
    for name in img_list:
        print(name)
        divide_imgs(img_path, name, save_path)

3 效果展示 

待剪切图像:

剪切完成后每个原图对应一个文件夹:

剪切完成后单独文件夹的图像信息:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值