在Python中读取并显示遥感影像,可以使用rasterio
库读取影像数据,并结合matplotlib
进行可视化。以下是一个完整的示例代码:
import rasterio
import matplotlib.pyplot as plt
import numpy as np# 打开遥感影像文件
with rasterio.open('path/to/your/image.tif') as src:# 读取所有波段数据data = src.read() # 返回形状为 (bands, height, width) 的numpy数组# 获取影像的基本信息width = src.widthheight = src.heightbands = src.countcrs = src.crstransform = src.transformprint(f"影像尺寸: {width}x{height}, 波段数: {bands}")print(f"坐标系: {crs}")# 显示影像(假设前三个波段是RGB)plt.figure(figsize=(10, 10))plt.imshow(np.moveaxis(data, 0, -1)) # 调整维度顺序以便正确显示plt.title('遥感影像显示')plt.axis('off') # 关闭坐标轴plt.show()
代码说明:
-
读取影像:使用
rasterio.open
打开影像文件,src.read()
读取所有波段数据,返回一个形状为(bands, height, width)
的NumPy数组。 -
显示影像:
- 使用
matplotlib.pyplot.imshow
显示影像。 np.moveaxis(data, 0, -1)
将波段维度从第一维移动到最后一维,以便imshow
正确解析RGB通道。plt.axis('off')
关闭坐标轴,使显示更干净。
- 使用
-
注意事项:
- 确保文件路径正确,且文件格式被
rasterio
支持(如GeoTIFF)。 - 如果影像的波段顺序不是RGB(如某些卫星影像可能使用其他波段组合),需要调整波段顺序。
- 对于大型影像,直接显示可能会导致内存不足,可以先裁剪或降采样。
- 确保文件路径正确,且文件格式被
安装依赖:
pip install rasterio matplotlib
扩展功能:
- 波段选择:如果影像包含多个波段,可以手动选择特定波段组合进行显示。
- 直方图拉伸:对影像进行直方图拉伸以增强对比度。
- 地理坐标显示:结合
cartopy
库添加地理坐标网格。
如果需要更复杂的处理或可视化,可以进一步探索rasterio
和matplotlib
的高级功能。