Python将TIFF图像转1D数组调用asarray报TypeError问题问询
报错原因及解决方法
- 导入语句编写错误:你写的
import numpy as asarray是将整个numpy模块重命名为asarray,模块对象无法直接作为函数调用,这是触发TypeError: 'module' object is not callable报错的核心原因。 - 参数传递错误:你调用时传入的是字符串
'dengue_files',加引号后代表普通字符串,不是你之前通过glob2生成的文件列表变量。
修复后的基础代码有两种常用写法:
# 写法1:直接导入asarray函数 from numpy import asarray dengue_files_A = asarray(dengue_files)
# 写法2:使用numpy常用别名写法(更推荐) import numpy as np dengue_files_A = np.asarray(dengue_files)
如果要实现将所有TIFF图像转为1D数组的目标,你还需要读取图像后做展平处理,完整参考代码如下:
import numpy as np import cv2 import glob2 # 替换为你的TIFF文件夹实际路径 dengue_files = glob2.glob("你的TIFF文件夹路径/*.tiff") img_1d_collection = [] for file_path in dengue_files: # 按原始格式读取TIFF图像 img = cv2.imread(file_path, cv2.IMREAD_UNCHANGED) # 转为1D数组 img_1d = img.flatten() img_1d_collection.append(img_1d) # 合并所有图像的1D数组为统一数组(可选) all_img_1d_arr = np.array(img_1d_collection)
不习惯用OpenCV也可以替换为PIL库读取图像,逻辑一致。
内容的提问来源于stack exchange,提问作者user15653028
相关产品推荐
相关产品推荐

