单波段栅格影像高斯滤波平滑代码分享
记得更改一下命名变量,同时这个是单波段不是多波段哦,多波段代码可以看参考链接里的小姐姐的分享。
import cv2
from osgeo import gdal
#定义图像打开方法
def image_open(image):
dataset = gdal.Open(image)
if dataset == "None":
print("无法打开数据")
return dataset
#命名相关变量
FilePath = r"E:\157.tif"
data = image_open(FilePath)
Projection = data.GetProjection()
Transform = data.GetGeoTransform()
#按照np方式读取图像
X = data.RasterXSize
Y = data.RasterYSize
DataArray = data.ReadAsArray(0, 0, X, Y)
height, width = DataArray.shape
print(X,Y, width, height)
band=1
#高斯滤波过程,滤波核大小为3×3
GS = cv2.GaussianBlur(DataArray, (3, 3), 0)
#输出数据集
output1 = gdal.GetDriverByName("GTiff")
output2 = output1.Create("GS157.tif", width, height,1, gdal.GDT_Float32)
output2.SetProjection(Projection)
output2.SetGeoTransform(Transform)
output2.GetRasterBand(1).WriteArray(GS)
output2.FlushCache() # 写入硬盘
output2 = None
参考:
https://zhuanlan.zhihu.com/p/142058460