AI4Boundaries数据集掩码TIFF读取错误及批量转换咨询
AI4Boundaries掩码TIFF读取问题与解决办法
问题原因
影像文件夹的TIFF是标准图像格式TIFF,包含RGB通道,符合普通图像阅读器和mpimg的识别规范;而掩码文件夹的TIFF是带地理参考的单波段地理空间栅格,这类TIFF包含地理元数据,且通常存储边界标签的数值型单波段数据,不属于普通图像TIFF范畴,因此mpimg无法识别,仅能被ArcMap这类GIS软件解析,并通过黑蓝渐变可视化单波段数值。
解决方案
方案1:直接读取地理空间TIFF(无需转换)
使用专门的地理空间栅格库rasterio读取掩码文件,无需格式转换即可正常处理:
import rasterio import matplotlib.pyplot as plt # 读取掩码TIFF with rasterio.open('/content/AT_2989_ortholabel_1m_512.tif') as src: mask = src.read(1) # 读取单波段标签数据 # 可视化掩码 plt.imshow(mask, cmap='gray') plt.show()
安装依赖:
pip install rasterio matplotlib
方案2:批量转换为PNG格式
如果业务流程必须依赖PNG格式,可使用rasterio结合PIL批量处理文件夹内的7k+文件:
import os import rasterio from PIL import Image import numpy as np # 配置路径(替换为实际路径) input_dir = "/your/masks/folder/path" output_dir = "/your/png/output/folder" # 创建输出文件夹 os.makedirs(output_dir, exist_ok=True) # 遍历并转换所有TIFF文件 for filename in os.listdir(input_dir): if filename.lower().endswith('.tif'): tiff_path = os.path.join(input_dir, filename) # 读取地理空间TIFF的单波段数据 with rasterio.open(tiff_path) as src: mask_data = src.read(1) # 将标签数值归一化到0-255(适配PNG格式) mask_data = ((mask_data - mask_data.min()) / (mask_data.max() - mask_data.min()) * 255).astype(np.uint8) # 转为PNG并保存 img = Image.fromarray(mask_data) png_filename = os.path.splitext(filename)[0] + '.png' img.save(os.path.join(output_dir, png_filename)) print(f"完成转换:{filename}")
安装额外依赖:
pip install pillow numpy
原代码执行时的错误信息:
UnidentifiedImageError: cannot identify image file '/content/AT_2989_ortholabel_1m_512.tif'
内容的提问来源于stack exchange,提问作者Hiba nasir
相关产品推荐
相关产品推荐

