import numpy as np
import imageio
import cv2
from osgeo import osr, gdal
def assign_spatial_reference_byfile(src_path, dst_path):
src_ds = gdal.Open(src_path, gdal.GA_ReadOnly)
sr = osr.SpatialReference()
sr.ImportFromWkt(src_ds.GetProjectionRef())
geoTransform = src_ds.GetGeoTransform()
dst_ds = gdal.Open(dst_path, gdal.GA_Update)
dst_ds.SetProjection(sr.ExportToWkt())
dst_ds.SetGeoTransform(geoTransform)
dst_ds = None
src_ds = None
def add_background(img,gt):
h,w,ch = img.shape
temp = np.zeros((h,w,ch)).astype(np.uint8)
for c,j in zip(range(ch),[0,0,0]):
temp[:,:,c][img[:,:,c]==j]=1
gt[np.sum(temp,axis=2)==3]=0
return gt
if __name__ == '__main__':
img = cv2.imread('5_288.tif')
gt = cv2.imread('5_288_ESA_label.tif',0)
result_gt = add_background(img,gt)
imageio.imsave(r'5_288gt.tif',result_gt)
src_path = '5_288_ESA_label.tif'
dst_path = r'5_288gt.tif'
assign_spatial_reference_byfile(src_path, dst_path)