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

Python与Numpy图像融合报错:TypeError: Cannot handle this data type

问题解决:图片数组处理报错 TypeError: Cannot handle this data type

报错原因

你遇到的错误是因为Image.fromarray不支持int64(<i8)类型的数组。PIL库处理图片时,要求像素数据是uint8类型(范围0-255的无符号整数),而你用astype(int)得到的是int64类型,超出了PIL的支持范围。

修正后的代码

import numpy as np
from PIL import Image

# 注意:这里要写完整的文件名,比如"img1.jpg"、"img2.png"
image1 = Image.open("img1")
image2 = Image.open("img2")

# 转成数组后直接计算
array1 = np.asarray(image1)
array2 = np.asarray(image2)

# 相加后除以2,最后转成uint8类型
output = (array1 + array2) / 2
final_product = output.astype(np.uint8)

# 生成并保存图片
Image.fromarray(final_product).save("my_img_numpy.png")

关键修改点

  • 把astype(int)改成astype(np.uint8),将数组转为PIL支持的图片像素类型
  • 简化了计算步骤,直接用(array1 + array2)/2替代分步的np.add和np.divide,代码更简洁
  • 注意图片路径要写完整,比如如果是JPG格式,要写成"img1.jpg",否则PIL可能找不到文件

额外提示

如果两张图片的尺寸(宽、高、通道数)不一样,相加会直接报错,所以要确保两张图是同尺寸、同格式的图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:49:55