参考了其他博主的代码进行修改
改为批量将分割的原图和mask同时裁剪为指定大小,
对于h和w小于512的块进行舍弃,所以之后直接合并时易出现白缝
合并的话把后半部分的注释取消,把分块部分注释即可
参照unet作者使用的overlap-tile策略,重叠分块数据更多,然后对模型在边缘信息的学习应该有所帮助
,但是直接在模型中取样很吃内存、而且很慢,所以我觉得直接分好再输入训练好一些,有大佬的话,请指点一下,代码在下一篇:
import numpy as np
import cv2
import os
"""
输入:图片路径(path+filename),裁剪获得小图片的列数、行数(也即宽、高)
"""
def crop_one_picture(path,path_gt,filename,cols,rows):
img = cv2.imread(path + filename,1)##读取彩色图像,图像的透明度(alpha通道)被忽略,默认参数;灰度图像;读取原始图像,包括alpha通道;可以用1,0,-1来表示
img_gt = cv2.imread(path_gt + filename,0) #gt图片以原本通道读取
sum_rows=img.shape[0] #高度
sum_cols=img.shape[1] #宽度
save_path = path+"crop{0}_{1}".format(cols,rows) #保存的路径
save_path_gt <