从植物的近红外图像计算NDVI

时间:2020-09-30 09:25:21

标签: python opencv

我正在尝试获取植物图像的NDVI。这是我第一次这样做,所以不确定执行的步骤是否正确。在第二个块中,我向NIR图像添加了一个色图,然后拆分了通道,以便可以对NIR通道和Red通道使用NDVI公式。在最后一个块中,我应用了公式并绘制了图像。第二个块中的结果值看起来有点像我,但是我不确定如何检查这是否正确。

import os 
from PIL import Image
import matplotlib.pyplot as plt 
from matplotlib import cm 
import numpy as np 
from IPython.display import display
import cv2
import cmapy

img_path = os.getcwd() + "/plant.png"
img = Image.open(img_path)
plt.figure(figsize = (10,10))
test_img = img
plt.imshow(test_img)

NIR图片: enter image description here

test_img2 = cv2.imread(img_path)
img_c = cv2.applyColorMap(test_img2, cmapy.cmap('Reds')).astype(np.int)
_, R, NIR = cv2.split(img_c)

plt.figure(figsize = (10,10))
plt.imshow(img_c)
plt.show()

添加颜色图: enter image description here

ndvi = (NIR-R)/(NIR+R+0.01)
print(ndvi.max())     0.9999029220464032
print(ndvi.mean())    0.10046810466714343
print(ndvi.min())    0.01999960000799984

plt.figure(figsize = (10,10))
plt.imshow(ndvi)
plt.show()

计算NDVI后: enter image description here

0 个答案:

没有答案