如何将 tiff 图像保存到新的 npy 文件中?

Posted

技术标签:

【中文标题】如何将 tiff 图像保存到新的 npy 文件中?【英文标题】:How to save tiff images into a new npy file? 【发布时间】:2020-07-16 15:09:07 【问题描述】:

我想将我拥有的一些 tiff 图像保存到一个新的 npy 文件中。

我的数据保存在 5 个不同的文件中(tiff 格式)。我想访问它们中的每一个,将它们转换为 narray,然后将它们保存在一个新的 npy 文件中(用于深度学习分类)。

import numpy as np 
from PIL import Image
import os

Data_dir = r"C:\Desktop\Université_2019_2020\CoursS2_Mosef\Stage\Data\Grand_Leez\shp\imagettes"
Categories = ["Bouleau_tiff", "Chene_tiff", "Erable_tiff", "Frene_tiff", "Peuplier_tiff"]

for categorie in Categories:
    path = os.path.join(Data_dir, categorie) #path for each species
    for img in os.listdir(path):
        path_img = os.path.join(path,img)
        im = Image.open(os.path.join(path_img)) #load an image file
        imarray = np.array(im) # convert it to a matrix
        imarray = np.delete(imarray, 3, axis=2)
        np.save(Data_dir, imarray)

问题:它只是返回我最后一个类别"Peuplier_tiff"的最后一个观察结果,它还保存在名称imagette中,我不知道为什么。

最后但并非最不重要的一点是,我对我的目标有疑问,我如何确保我的类别正确分配给相应的数组。

很多问题, 提前感谢您的帮助。

S.V

【问题讨论】:

您必须在保存每个文件时使用唯一的文件名np.save(Data_dir + "/" + unique_name, imarray) 但您的Data_dir 似乎不是目录路径,您必须先创建它 - 即。 os.makedirs(Data_dir) 顺便说一句:os.path.join(path_img) 给出与直接path_img 相同的路径 感谢@furas,它正在工作。我现在想将我的每个阵列放在一个特定的 nyp 文件夹中(对于每个物种)。一步一个脚印,比利时见 fullpath = os.path.join( specific_folder, filename ) 【参考方案1】:

感谢您的回复。它使用此代码:

import numpy as np
from PIL import Image
import os


new_dir = "dta_npy"
directory = r"C:\Desktop\Université_2019_2020\CoursS2_Mosef\Stage\Data\Grand_Leez\shp\imagettes"
Data_dir = os.path.join(directory, new_dir)
os.makedirs(Data_dir)
print("Directory '%s' created" %Data_dir)

Categories = ["Bouleau_tif","Chene_tif", "Erable_tif", "Frene_tif", "Peuplier_tif"]

for categorie in Categories:
    path = os.path.join(directory,categorie) #path for each species
    for img in os.listdir(path):
        im = Image.open(os.path.join(path,img)) #load an image file
        imarray = np.array(im) # convert it to a matrix
        imarray = np.delete(imarray, 3, axis=2)
        unique_name=img
        unique_name = unique_name.split(".")
        unique_name = unique_name[0]
        np.save(Data_dir+"/"+unique_name, imarray)
        

现在我的目标是以这种方式为我的每个班级格式化我的数据:(点击链接)

format goal

【讨论】:

如何格式化数据?您只显示文件名。如果你想格式化文件名,那么问题出在哪里——文件名是一个字符串,你可以使用任何字符串的函数——即f-stringf"full_numpy_bitmap_arg.npy""full_numpy_bitmap_arg.npy".format(arg)"full_numpy_bitmap_%s.npy" % (arg,) 如果您有新问题,请在新页面上创建新问题

以上是关于如何将 tiff 图像保存到新的 npy 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量保存到新的文本文件中,以便下次程序运行时加载这些变量?

将 .npy(numpy 文件)输入 tensorflow 数据管道

遥感图像处理如何将7幅TIFF图像转换1幅img图像 用的是erdas软件,求具体一点点流程

如何从 hdf5 保存/提取数据集并转换为 TiFF?

如何在新的app界面中的jTessBoxEditor(tesseract)中生成tiff / box?

如何使用 numpy.savez 将带有子数组的数组保存到单独的 .npy 文件中