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()#消除窗口
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值