.tiff .png .jpg Matlab 和python之间的读取和显示

基础知识:

1:遥感高分影像,一般默认为tif或tiff 格式,均为16位(uint16)。

matlab:

 a) tiff的读取,需要用到geotiffread()函数,如:

      [data,R] =geotiffread('D:\GF1_WFV1_E99.4_N36.3_20140716_L2A0000278923.tiff');

                #其中data 为图像数据,R为图像的通道数

b) tif的读取,直接用imread()函数即可,如:

       img = imread('D:\1.tif');

c)显示:四波段数据无法在matlab中直接imshow(),matlab输出图像要求最高三波段,常用cat()函数截取三波段,再输出。如:

                

        img=cat(3,GF1data(:,:,1),GF1data(:,:,2),GF1data(:,:,3));    //此时得到三波段的uint16数据。
        img_gray = rgb2gray(img);    //得到灰度图,单波段的uint16

        imshow(img_gray ,[]);     //正常显示

python:

a)tiff的读取,建议引入gdal库,具体可参考搜索引擎!

b)tif 的读取,直接cv2.imread()或os.imread(),如:

            

          img = cv2.imread('C:/MU/img1_12.tif',-1)

注:  尾巴加了-1,是为了保证img以原始uint16保存,否则会python系统自动将读取的16位改为8位,自动压缩数据,必定带来一些信息损失,可能影像结果也可能不影响!

c)显示: python无法直接输出超过三波段的影像,且只有uint8位的数据才能正常显示,为了让图像显示更符合人类视觉,我们经常做的就是转换一下:             

             img = np.uint8(255.0 * (img - np.min(img)) / (np.max(img) - np.min(img)))

              # 归一化(normalization )操作,uint8后的img,直接:

             cv2.imshow('img_uint8',img)     #即可正常显示图片

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值