我对Python还是很陌生,所以请原谅可能是一个基本问题。
因此,我试图创建一个训练数据集,其中包含用于图像补丁的文件和用于遮罩的文件。目前,它们都是我从中提取补丁的大栅格。图像有3条带,而遮罩有1条
ds = gdal.Open(A_Clipped,gdal.GA_ReadOnly)
es = gdal.Open(Mask_Clipped,gdal.GA_ReadOnly)
#Raster Info
#print (ds.GetMetadata(),ds.RasterXSize,ds.RasterYSize)
#print (ds.GetProjection())
#print ("Number of raster bands",ds.RasterCount)
band1 = ds.GetRasterBand(1)
band2 = ds.GetRasterBand(2)
band3 = ds.GetRasterBand(3)
mask = es.GetRasterBand(1)
ar1 = band1.ReadAsArray()
ar2 = band2.ReadAsArray()
ar3 = band3.ReadAsArray()
mask_ar= mask.ReadAsArray()
在提取补丁时,我遇到了内存错误,因此指定的max_patches小于我想要的大小:
###Extract Patches###
A1_image = ar1
print('A1 Image shape: {}'.format(A1_image.shape))
patches1 = image.extract_patches_2d(A1_image,(64,64),max_patches=100)
print('A1Patches shape: {}'.format(patches1.shape))
.
.
.
Mask_image = mask_ar
print('M Image shape: {}'.format(Mask_image.shape))
Mask_patches = image.extract_patches_2d(Mask_image,max_patches=100)
print('M Patches shape: {}'.format(Mask_patches.shape))
所以我有两个问题: 1.是否还有其他方法可以解决此内存错误(也许是保存选项?),所以我可以指定更多的补丁程序?作为参考,我的图像形状为图像形状:(8964,8180)。 2.是否有必要将现在的3波段图像中的3个阵列合并在一起?