IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 多波段影像 tif转为jpg(png) -> 正文阅读

[人工智能]多波段影像 tif转为jpg(png)

首先,对于多波段影像里面有很多信息(包括仿射变换、投影信息),因此首先要读取TIF数据。

其中里面包含根据仿射矩阵获取地理坐标信息等代码。

def readTif(fileName, xoff=0, yoff=0, data_width=0, data_height=0):
    '''
    读取tif影像数据
    '''
    dataset = gdal.Open(fileName)
    if dataset == None:
        print(fileName + "文件无法打开")
    #  栅格矩阵的列数
    width = dataset.RasterXSize
    #  栅格矩阵的行数
    height = dataset.RasterYSize
    #  波段数
    bands = dataset.RasterCount
    #  获取数据
    if(data_width == 0 and data_height == 0):
        data_width = width
        data_height = height
    data = dataset.ReadAsArray(xoff, yoff, data_width, data_height)  # np.array
    # print(type(data))
    #  获取仿射矩阵信息
    geotrans = dataset.GetGeoTransform()
    #  获取投影信息
    proj = dataset.GetProjection()
    arrXY = []  # 用于存储每个像素的(x,y)坐标
    for i in range(height):
        row = []
        for j in range(width):
            xx = geotrans[0] + i * geotrans[1] + j * geotrans[2]
            yy = geotrans[3] + i * geotrans[4] + j * geotrans[5]
            col = [xx, yy]
            row.append(col)
        arrXY.append(row)
    return width, height, bands, data, geotrans, proj, arrXY

接下来,是根据上述读取TIF的data作为基础,因为data是numpy.array,CHW格式数据,就可以根据三维数组思想将TIF格式转为JPG(PNG)。

def tif_to_jpg(src_tifs):
    '''tif转为jpg显示'''
    for src_tif in src_tifs:
        pre_img = readTif(src_tif)[3]
        # print('xxyy.type', type(xxyy))
        pre_img_one = pre_img[4, :, :]#R通道
        pre_img_two = pre_img[6, :, :]#G通道
        pre_img_three = pre_img[1, :, :]#B通道
        # height, width = pre_img.shape[1:]
        new_array = np.array([pre_img_one, pre_img_two, pre_img_three])#重新将三个通道组成为数组
        new_array = np.transpose(new_array, (1, 2, 0))#将CHW转为HWC
        img = Image.fromarray(np.uint8(new_array))#数组转为图片所用的函数

        dir, file_name1 = os.path.split(src_tif)  # split将文件和路径分开
        (prename, suffix) = os.path.splitext(
            file_name1)  # splitext将文件名和后缀分开
        dst_jpg_path = r'F:\tif_to_rgb'
        dst_jpg = os.path.join(dst_jpg_path, prename+'.jpg')#改为png即可
        print(dst_jpg, img.shape)
        img.save(dst_jpg)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:54:11  更:2021-11-27 09:56:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 3:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码