You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIL读取dengue文件夹TIFF图片报UnidentifiedImageError 求生成1D数组方案

报错原因及解决方案

UnidentifiedImageError 报错的核心原因是默认安装的Pillow库对部分非标准TIFF格式、特殊压缩编码(如LZW、CCITT)的科研/遥感类TIFF支持不全,导致无法识别文件。以下是可直接落地的解决方法:

方法1:补全Pillow的TIFF依赖(保留原有代码逻辑)

  • 先更新Pillow为带libtiff支持的版本:
pip uninstall pillow
pip install pillow[libtiff]
  • 优化后的读取+转1D数组代码,增加异常兼容:
from PIL import Image
import glob
import numpy as np

image_list = []
one_dim_arr_list = []
for filename in glob.glob('./dengue/*.tiff'): 
    try:
        with Image.open(filename) as im:
            image_list.append(im)
            # 直接转numpy数组后拉平为1D
            one_dim_arr = np.array(im).flatten()
            one_dim_arr_list.append(one_dim_arr)
    except Exception as e:
        print(f"文件{filename}读取失败:{str(e)}")

方法2:用专业TIFF读取库(兼容性最高,适配所有TIFF格式)

推荐处理科研类TIFF时使用该方案:

  • 安装依赖:
pip install pylibtiff numpy
  • 读取+转1D数组代码:
from libtiff import TIFF
import glob
import numpy as np

one_dim_arr_list = []
for filename in glob.glob('./dengue/*.tiff'):
    tif_handle = TIFF.open(filename, mode='r')
    img_data = tif_handle.read_image()
    one_dim_arr = img_data.flatten()
    one_dim_arr_list.append(one_dim_arr)
    tif_handle.close()

方法3:用OpenCV读取(适配常规影像类TIFF)

  • 安装依赖:
pip install opencv-python numpy
  • 读取+转1D数组代码:
import cv2
import glob
import numpy as np

one_dim_arr_list = []
for filename in glob.glob('./dengue/*.tiff'):
    # IMREAD_UNCHANGED参数保留原始通道、位深,不需要的话可替换为对应读取参数
    img_data = cv2.imread(filename, cv2.IMREAD_UNCHANGED)
    one_dim_arr = img_data.flatten()
    one_dim_arr_list.append(one_dim_arr)

注意:如果你的TIFF是多帧堆叠格式,上述代码默认仅读取第一帧,需要读取全量帧的话可增加逐帧遍历逻辑后再合并拉平。

内容的提问来源于stack exchange,提问作者user15653028

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:15:07