首页 > 解决方案 > 从 4 波段图像中提取 RGB(光栅)

问题描述

我是 python 的初学者,我仍然熟悉它的库,如果这是一个新手问题,我深表歉意。我只想显示 4 个波段(R、G、B、NIR)的图像。我想删除 NIR 并保留其他 3。我该怎么做?由于 rasterio 返回的是对象而不是图像,因此我无法使用 split 功能。

from rasterio.plot import show
from matplotlib import pyplot
dataset = rasterio.open('sample.tif')
show(dataset)

这当然显示了不正确的结果(白色和黄色图像)。

编辑,我尝试了以下方法:

img_combined = cv2.merge((dataset.read(1),dataset.read(2),dataset.read(3)))
%matplotlib qt
plt.imshow(img_combined)
plt.xticks([]), plt.yticks([])
plt.show()

但它仍然以黄色和白色显示图像。

标签: pythonimshowrasterio

解决方案


为了仅显示 RGB 波段(不是 alpha)或任何特定波段,您需要使用 read 方法和 show 方法。

import rasterio
from rasterio.plot import show

#to display RGB
dataset = rasterio.open('sample.tif')
show(dataset.read([1,2,3]))

#to display just the red band:
show(dataset.read(1))

推荐阅读