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 效果展示 

待剪切圖像:

剪切完成後每個原圖對應一個文件夾:

剪切完成後單獨文件夾的圖像信息:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章