16bit
sentinel2影像降位(16bit To 8bit)_python
8bit
sentinel2影像降位(16bit To 8bit)_python_02

from skimage import exposure, img_as_ubyte
import gdalTools
import numpy as np
from PIL import Image as pilimg
from pathlib import Path
import warnings
import rasterio


if __name__ == '__main__':
imgPath = "test.tif"
outPath = "test3_8bit.jpg"
src = rasterio.open(imgPath)
img_array = np.dstack(list(src.read([3, 2, 1])))

img_array = exposure.rescale_intensity(img_array, in_range=(0, 2200))
with warnings.catch_warnings():
warnings.simplefilter("ignore")
img_array = img_as_ubyte(img_array)
img_pil = pilimg.fromarray(img_array)

with open(Path(outPath), 'w') as dst:
img_pil.save(dst, format='JPEG', subsampling=0, quality=100)

stats = {'mean': img_array.mean(axis=(0, 1)),
'std': img_array.std(axis=(0, 1))}
print(stats)