求助:按相同UTC时间戳合并图像numpy数组的实现方法
按UTC时间戳分组求和图像数组
图像文件列表格式
[utc1_1.tga, utc1_2.tga, utc1_3.tga, utc1_4.tga, utc2_1.tga, utc2_2.tga, utc2_3.tga, utc2_4.tga, utc3_1.tga, utc3_2.tga, utc3_3.tga, utc3_4.tga,..]
现有时间戳提取问题
你原本尝试用以下代码提取时间戳:
images = list(sorted([int(name.split('_')[0]) for name in directory_files]))
但这段代码会报错,因为name.split('_')[0]得到的是utc1这类带字母的字符串,无法直接转换为整数。正确的做法是从标识中分离出数字部分,比如从utc1提取1。
需求目标
将已转为numpy数组的图像按相同UTC时间戳分组,对每组内的数组执行求和操作。
现有代码片段
import cv2 from numpy import asarray from multiprocessing import Process import glob from PIL import Image images = glob.glob(f"{directory_files}*.tga") for img_name in images: with open(img_name, 'rb') as ldr: print(img_name) image = Image.open(ldr) data = asarray(image) print(data.shape) # images = list(sorted([int(name.split('_')[0]) for name in directory_files])) # print(images) # same_utc_arrays = # np.sum(same_utc_arrays)
解决方案代码
以下代码实现按UTC时间戳分组求和:
import glob import numpy as np from PIL import Image # 替换为你的实际目录路径 directory_files = "./" # 用字典存储各UTC分组的求和结果 utc_sum_dict = {} # 遍历所有TGA文件 for img_path in glob.glob(f"{directory_files}*.tga"): # 提取UTC标识(如从utc1_1.tga中得到'utc1') # 处理路径分隔符,确保只取文件名部分的UTC标识 utc_key = img_path.split('_')[0].split('/')[-1] # 读取图像并转为numpy数组 with open(img_path, 'rb') as f: img = Image.open(f) img_array = np.asarray(img) # 累加数组到对应分组 if utc_key in utc_sum_dict: utc_sum_dict[utc_key] += img_array else: utc_sum_dict[utc_key] = img_array.copy() # 输出结果示例 for utc, sum_array in utc_sum_dict.items(): print(f"UTC {utc} 的求和数组形状: {sum_array.shape}") # 如需保存结果图像,可取消以下注释 # sum_img = Image.fromarray(sum_array) # sum_img.save(f"{utc}_sum.tga")
说明
- 用字典
utc_sum_dict以UTC标识为键,存储对应分组的累加数组 - 处理路径时兼容不同系统的分隔符,确保正确提取UTC标识
- 若需按数字顺序输出分组,可将
utc_key转换为整数(如int(utc_key[3:]))后排序
内容的提问来源于stack exchange,提问作者SkyImager
相关产品推荐
相关产品推荐

