jp2格式读取并批量转为GeoTiff格式

jp2格式读取并批量转为GeoTiff格式对于 jp2 格式 如果不追求地理坐标 只读取像素值 可以使用 opencv 进行数据读取 如果要保留原始数据中的地理坐标 就需要 gdal 来进行读取了

大家好,欢迎来到IT知识分享网。

「作者主页」:zy_destiny
「作者简介」:主要关注计算机视觉、语义分割、目标检测、遥感影像处理、变化检测等方向,正在努力成为CSDN优质创作者
「推荐专栏」:对变化检测感兴趣的小伙伴可以关注专栏“变化检测论文解读”

                         对GDAL感兴趣的小伙伴可以关注专栏——GDAL

                         对目标检测感兴趣的小伙伴可以关注专栏——变化检测论文解读

                         对语义分割感兴趣的小伙伴可以关注专栏——语义分割

                         对Transformer感兴趣的小伙伴可以关注专栏——Transformer

目录

🍒🍒jp2格式说明:

🍆🍆jp2格式读取方式一

🍆🍆jp2格式读取方式二

🌺🌺jp2格式转tif格式

🙋🙋批量jp2格式转tif格式


🍒🍒jp2格式说明:

jp2格式:  经过JPEG2000压缩算法压缩后的一种影像数据格式

GeoTiff格式:一种带地理坐标的以tif或tiff为后缀的一种影像数据格式

        对于jp2格式,如果不追求地理坐标,只读取像素值,可以使用opencv进行数据读取,如果要保留原始数据中的地理坐标,就需要gdal来进行读取了。 本文主要讲解如何通过gdal将jp2格式数据转换为tif格式。


🍆🍆jp2格式读取方式一

用opencv读取,不包含地理坐标,读取到的波段顺序为BGR

#用opencv读取,不包含地理坐标,读取到的波段顺序为BGR import cv2 img = cv2.imread(jp2_path,cv2.IMREAD_UNCHANGED) 

🍆🍆jp2格式读取方式二

用gdal读取,能读取到地理坐标,读取到的array波段顺序为RGB

#用gdal读取,能读取到地理坐标,读取到的array波段顺序为RGB from osgeo import gdal dataset = gdal.Open(jp2_path) img = dataset.ReadAsArray()


🌺🌺jp2格式转tif格式

函数参数说明:

  • gdal.GDT_Byte格式为uint8
  • gdal.GDT_UInt16为uint16
  • 数据均为单波段
  • jp2_path:jp2格式数据路径
  • save_file:tif格式数据路径
  • 设置nodata为0
#gdal.GDT_Byte格式为uint8,gdal.GDT_UInt16为uint16,数据均为单波段 #jp2_path:jp2格式数据路径 #save_file:tif格式数据路径 from osgeo import gdal import numpy as np def jp2Totif(jp2_path,save_path,file_name): file_name = os.path.splitext(file_name)[0] save_file = os.path.join(save_path,file_name) save_file = save_file+'.tif' dataset = gdal.Open(jp2_path) rows = dataset.RasterYSize cols = dataset.RasterXSize projection = dataset.GetProjection() trans = dataset.GetGeoTransform() data = dataset.ReadAsArray() if data.dtype == 'uint16': driver = gdal.GetDriverByName('GTiff') out_dataset = driver.Create(save_file, cols, rows, 1, gdal.GDT_UInt16) out_dataset.SetProjection(projection) out_dataset.SetGeoTransform(trans) out_dataset.GetRasterBand(1).WriteArray(data) out_dataset.GetRasterBand(1).SetNoDataValue(0) out_dataset.FlushCache() del dataset, out_dataset elif data.dtype == 'uint8': driver = gdal.GetDriverByName('GTiff') out_dataset = driver.Create(save_file, cols, rows, 1, gdal.GDT_Byte) out_dataset.SetProjection(projection) out_dataset.SetGeoTransform(trans) out_dataset.GetRasterBand(1).WriteArray(data) out_dataset.GetRasterBand(1).SetNoDataValue(0) out_dataset.FlushCache() del dataset, out_dataset


🙋🙋批量jp2格式转tif格式

函数参数说明:

  • input_dir:jp2格式数据输入文件夹地址
  • output_dir:tif格式数据保存文件夹地址
  • gdal.GDT_Byte格式为uint8
  • gdal.GDT_UInt16为uint16
  • 数据均为单波段
  • 设置nodata为0
from osgeo import gdal import numpy as np def jp2Totif(jp2_path,save_path,file_name): file_name = os.path.splitext(file_name)[0] save_file = os.path.join(save_path,file_name) save_file = save_file+'.tif' dataset = gdal.Open(jp2_path) rows = dataset.RasterYSize cols = dataset.RasterXSize projection = dataset.GetProjection() trans = dataset.GetGeoTransform() data = dataset.ReadAsArray() if data.dtype == 'uint16': driver = gdal.GetDriverByName('GTiff') out_dataset = driver.Create(save_file, cols, rows, 1, gdal.GDT_UInt16) out_dataset.SetProjection(projection) out_dataset.SetGeoTransform(trans) out_dataset.GetRasterBand(1).WriteArray(data) out_dataset.GetRasterBand(1).SetNoDataValue(0) out_dataset.FlushCache() del dataset, out_dataset elif data.dtype == 'uint8': driver = gdal.GetDriverByName('GTiff') out_dataset = driver.Create(save_file, cols, rows, 1, gdal.GDT_Byte) out_dataset.SetProjection(projection) out_dataset.SetGeoTransform(trans) out_dataset.GetRasterBand(1).WriteArray(data) out_dataset.GetRasterBand(1).SetNoDataValue(0) out_dataset.FlushCache() del dataset, out_dataset if __name__ == "__main__": input_dir = r'jp2格式文件所在路径' output_dir = r'GeoTiff文件的保存路径' for filename in os.listdir(input_dir): if filename.endswith('jp2'): jp2Totif(os.path.join(input_dir, filename), output_dir , filename.split('.jp2')[0] )

整理不易,欢迎一键三连!!!

送你们一条美丽的–分割线–

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121120.html

(0)
上一篇 2025-10-25 15:20
下一篇 2025-10-25 15:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信