python 高通道 TIF格式圖片的通道拆分與合併、讀取與保存

tif數據的讀取 彩色 近紅外圖像顯示 通道拆分與合併 python 詳細註釋筆記

TIF圖片的讀取

鑑於TIF圖片很多是衛星拍攝的16位圖像,很多圖片不能直接讀取,必須將其先進行數據的8位格式轉換,然後再進行通道的拆分和合並,才能進行圖像的讀取,否則圖像打開後會顯示全黑或者全白

一、使用的Python庫

  1. skimage
  2. numpy
  3. opencv
  4. matplotlib(可以直接查看矩陣)
from skimage import io
import cv2
import matplotlib.pyplot as plt
import numpy as np

二、函數代碼

def read_tif( imgpath ):
    img = io.imread(imgpath)#讀取圖片 imgpath爲圖片所在位置
    img = img/img.max()
    img =img*255-0.001#減去0.001防止變成負整型
    img =img.astype(np.uint8)
    print(img.shape)#顯示圖片大小和通道數  通道數爲4
    b = img[:, :, 0]#藍通道
    g = img[:, :, 1]#綠通道
    r = img[:, :, 2]#紅通道
    nir = img[:, :, 3]#近紅外通道,不可以用imshow直接查看
    
    #通道拼接  兩種方法
    bgr = cv2.merge([b, g, r])
    rgb=  np.dstack([r,g,b])
 
 	#imshow()必須有圖片的名字且像素最大值255,否則會報錯
 	cv2.imshow('bgr', bgr)
    plt.matshow(rgb)#matplotlib的matshow()可以直接看矩陣而不用進行位數轉換
    cv2.imshow('近紅外灰度圖',nir)#必須有圖片的名字且像素最大值255,否則會報錯
    #兩種方法接口不一樣,imshow爲bgr輸入 matshow爲rgb輸入
    cv2.imwrite("C:/Users/Administrator/Desktop/1.jpg", img)#保存圖片
    cv2.waitKey(0)#窗口等待響應
    cv2.destroyAllWindows()#消除窗口
發佈了3 篇原創文章 · 獲贊 1 · 訪問量 230
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章