我目前正在尝试在python中加载.TIF文件,然后将其另存为RGB和NIR图像。
这是我使用/尝试过的代码:
%matplotlib notebook
import tifffile as tiff
import cv2
from matplotlib import pyplot as plt
import skimage.io
import numpy as np
import os
def load_images_from_folder(folder):
images = []
for filename in os.listdir(folder):
img = None
print(filename)
if filename.endswith('.TIF'):
img = cv2.imread(os.path.join(folder,filename), -1)
#img = tiff.imread(os.path.join(folder,filename))
#img = skimage.io.imread(os.path.join(folder,filename), plugin='tifffile')
if img is not None:
images.append(img)
b,g,r,nir = cv2.split(img)
image_rgb = np.stack([b,g,r], axis=2)
nir_normalized = cv2.normalize(nir,None,0,255,cv2.NORM_MINMAX)
image_rgb_normalized = cv2.normalize(image_rgb,None,0,255,cv2.NORM_MINMAX)
skimage.io.imsave("satellite_imagery_split/" + filename[:-4] + "_nir_normalized.png", np.array(nir_normalized, dtype = np.uint8 ))
skimage.io.imsave("satellite_imagery_split/" + filename[:-4] + "_rgb_normalized.png", np.array(image_rgb_normalized, dtype = np.uint8 ))
cv2.imwrite("satellite_imagery_split/" + filename[:-4] + "_nir_normalized.png", np.array(nir_normalized, dtype = np.uint8 ))
cv2.imwrite("satellite_imagery_split/" + filename[:-4] + "_rgb_normalized.png", np.array(image_rgb_normalized, dtype = np.uint8 ))
return images
images = load_images_from_folder('satellite_imagery/')
,但没有任何变体可以正常工作。 使用OpenCV,我在整个图像上都有奇怪的条形:
对于tiff图像和scikit图像,如果具有这种怪异的色彩效果:
我尝试使用上面的代码进行不同的组合,但是没有任何结果给我合适的结果。 但是非常奇怪的是,对于某些图像(20张中的2张),结果是预期的,因此RGB和NIR图像看起来正确,但是对于其他所有图像,我都遇到了这种奇怪的现象。
有人可以告诉我我做错了什么,因为我也使用Adobe Lightroom打开了所有图像,并且所有原始的四通道图像看起来都正确。