自学python,刚刚会的一种简单的提取NDVI的代码,欢迎一起学习交流。
from osgeo import gdal
import matplotlib.pyplot as plt
import cv2
# 打开红光和近红外波段
red_band = gdal.Open(r"redband_tif")
nir_band = gdal.Open(r"nirredband_tif"")
# 读取红光和近红外波段数据
red_array = red_band.ReadAsArray().astype(float)
nir_array = nir_band.ReadAsArray().astype(float)
# 计算NDVI
ndvi = (nir_array - red_array) / (nir_array + red_array)
# 保存NDVI图像
driver = gdal.GetDriverByName("GTiff")# 创建一个GDAL驱动程序对象,指定要创建的文件类型为GeoTIFF。
ndvi_dataset = driver.Create("path_to_save_ndvi.tif", red_band.RasterXSize, red_band.RasterYSize, 1, gdal.GDT_Float32)
# 使用GDAL驱动程序创建一个新的GeoTIFF文件,指定文件名为"path_to_save_ndvi.tif"。
# red_band.RasterXSize和red_band.RasterYSize分别表示红波段的宽度和高度,这里将其用作新创建的NDVI波段的宽度和高度。1表示新创建的NDVI数据集只有一个波段。
# gdal.GDT_Float32指定新创建的NDVI波段的数据类型为32位浮点数。
ndvi_dataset.GetRasterBand(1).WriteArray(ndvi)# 获取新创建NDVI数据集的第一个波段