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()#消除窗口
发布了11 篇原创文章 · 获赞 3 · 访问量 828

猜你喜欢

转载自blog.csdn.net/qq_44930937/article/details/104187877