OpenCV批量将图片分为16份或者N份并保存

OpenCV批量将图片分为16份或者N份并保存

代码部分

import cv2
import os
import numpy as np
import matplotlib.pyplot as plt
#将图像分成16分,并保存下来
def shuffle_to_randomscale(src_image,h,w,pic,scale):
    plt.figure()
    pic_name = pic.split('.jpg')[0]
    for i in range(scale):
        grid_h = h/scale
        for j in range(scale):
            grid_w = w/scale
            img_copy = src_image[int(grid_h)*j:int(grid_h)*(j+1),int(grid_w)*i:int(grid_w)*(i+1)]
            new_name = pic_name + '_' + str(i) + str(j) + '.jpg'
            new_path = os.path.join('New_Dataset',new_name)
            print('Now recreate the picture {}'.format(new_name))
            # plt.subplot(4,4,i*4+j+1)
            plt.imshow(img_copy)
            # if (i==3 and j==3):
            cv2.imwrite(new_path,img_copy)
            print('Now recreate the picture {}'.format(new_name))
    plt.show()

#获得所有图像并完成图像分割成16段的任务
def main(path,scale):
    pic_names = os.listdir(path)
    for pic in pic_names:
        pic_path = path + '/' + pic
        src_image = cv2.imread(pic_path)
        h,w,_ = src_image.shape
        shuffle_to_randomscale(src_image,h,w,pic,scale)

if __name__ == '__main__':
    #设置想要裁剪的尺度
    scale = 4
    path = 'Dataset'
    main(path,scale)

结果显示

OpenCV批量将图片分为16份或者N份并保存_第1张图片

你可能感兴趣的:(matplot代码绘图,计算机视觉,opencv,python)