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)
结果显示