遥感影像分割成多幅小图像方法
程序员文章站
2024-03-24 22:17:58
...
目的
本人需要将一幅Landsat8影像,切割成多幅256 * 256的小幅影像,用于深度学习相关处理。
经过在envi中的可视化的裁剪,得到了一幅5130 * 5230的影像,我经过计算,发现可以横向切出
256 * 20,纵向同样切出256*20 =5120, 共计40幅影像。
方法
利用python
gdal模块读取影像并存入numpy数组
利用循环和opencv进行写入
利用os模块得到路径
代码
import numpy as np
from osgeo import gdal
from osgeo import gdal_array
from show import TwoPercentLinear
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拉伸,颜色显示较差
上一篇: Webpack4.0基础教程一:准备工作
下一篇: gitbash下命令行操作技巧
推荐阅读