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

Python中如何将(885, 1268)形状的图像转为(1,254,254,3)格式?

实现方案

你当前得到的形状为(885, 1268)的数组是单通道灰度图像的数值矩阵,要转换为形状为(1,254,254,3)的数组,需要完成尺寸缩放、单通道转3通道、新增batch维度三个核心操作,以下是可直接运行的实现代码:

基于OpenCV实现

安装依赖:pip install opencv-python numpy

import cv2
import numpy as np

# 假设你的原数组命名为 src_array ,形状为(885, 1268)
# 1. 缩放至254×254尺寸,插值方式可按需调整,常用的有cv2.INTER_AREA(缩小推荐)、cv2.INTER_LINEAR(线性插值)
resized_array = cv2.resize(src_array, (254, 254), interpolation=cv2.INTER_AREA)
# 2. 单通道转3通道:将灰度通道复制3次堆叠
rgb_array = cv2.cvtColor(resized_array, cv2.COLOR_GRAY2RGB)
# 3. 新增最外层的batch维度
target_array = np.expand_dims(rgb_array, axis=0)

# 验证形状
print(target_array.shape) # 输出为 (1, 254, 254, 3)

基于Pillow实现

安装依赖:pip install pillow numpy

from PIL import Image
import numpy as np

# 假设你的原数组命名为 src_array ,形状为(885, 1268)
# 1. 转PIL图像对象后缩放
img = Image.fromarray(src_array)
resized_img = img.resize((254, 254), Image.Resampling.LANCZOS)
resized_array = np.array(resized_img)
# 2. 单通道转3通道,堆叠三次
rgb_array = np.stack([resized_array]*3, axis=-1)
# 3. 新增batch维度
target_array = np.expand_dims(rgb_array, axis=0)

# 验证形状
print(target_array.shape) # 输出为 (1, 254, 254, 3)

注意事项

  • 如果你需要将数组作为深度学习模型的输入,可按需补充数据类型转换和归一化操作,比如添加target_array = target_array.astype(np.float32) / 255.0将数值归一化到0~1区间
  • 插值方式可根据你的业务场景调整,缩小图像推荐用区域插值/ Lanczos插值,放大图像推荐用线性插值

内容的提问来源于stack exchange,提问作者Hamza.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:02