遥感影像分割成多幅小图像方法

目的

本人需要将一幅Landsat8影像,切割成多幅256 * 256的小幅影像,用于深度学习相关处理。
经过在envi中的可视化的裁剪,得到了一幅5130 * 5230的影像,我经过计算,发现可以横向切出
256 * 20,纵向同样切出256*20 =5120, 共计400幅影像。

方法

利用python

  • gdal模块读取影像并存入numpy数组
  • 利用循环和opencv进行写入(实际用的时候要用gdal,可关注我后面有关landsat8处理小工具的博文)
    https://blog.csdn.net/RSstudent/article/details/108724556?spm=1001.2014.3001.5501
    其中代码的329-378行就是所需内容,还附带了地理编码和投影,地理信息不会丢失,可在实际中使用。
  • 利用os模块得到路径

代码

import numpy as np
from osgeo import gdal
from osgeo import gdal_array
import cv2
import os
filename = 'tiffbigcut.tif'
dataset = gdal.Open(filename)
datatype = dataset.GetRasterBand(1).DataType
rows = dataset.RasterYSize
columns = dataset.RasterXSize
bands = dataset.RasterCount
image = np.zeros((rows, columns, bands), 
				dtype = gdal_array.GDALTypeCodeToNumericTypeCode(datatype))
for b in range(bands):
    band = dataset.GetRasterBand(b+1)
    image[:, :, b] = band.ReadAsArray()
image_cut = image[:5120, :5120, :]
for i in range(19):
    for j in range(19):
        image_save = image_cut[i*256:(i+1)*256, j*256:(j+1)*256, :]
        base_dir = os.getcwd()
        dir_name = 'images'
        dir = os.path.join(base_dir, dir_name)
        filename = str(i) + str(j) + '.png'
        path = os.path.join(dir, filename)
        cv2.imwrite(path, image_save)

结果展示

缩略图没经过2%linear拉伸,颜色显示较差
在这里插入图片描述

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值