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

将RGB格式Numpy图像转换为含行列索引的RGB值列表

将Numpy RGB图像矩阵转换为带行列索引的扁平化数组

要实现将形状为(n,m,3)的RGB图像矩阵转换为(n*m,5)的数组(前3列RGB值,后2列对应行/列索引),可以通过生成索引网格并与扁平化的RGB值拼接的方式完成,具体步骤如下:

方法实现

  1. 获取图像尺寸:先提取图像的行数n和列数m
  2. 生成行列索引:用np.indices创建对应每个像素位置的行、列索引矩阵,再将其扁平化为(n*m,2)的数组
  3. 拼接RGB值与索引:将扁平化的RGB数组和索引数组横向拼接,得到最终结果

完整代码示例:

import numpy as np

# 示例:创建一个2行3列的RGB图像矩阵
image = np.random.randint(0, 256, (2, 3, 3), dtype=np.uint8)

# 获取图像的行、列数
n, m = image.shape[:2]

# 扁平化RGB值(原代码的实现)
flat_rgb = image.reshape(-1, 3)

# 生成并扁平化行列索引:形状变为(n*m, 2),每行对应[行号, 列号]
flat_indices = np.indices((n, m)).reshape(2, -1).T

# 拼接RGB值和索引,得到形状为(n*m,5)的结果
result = np.hstack([flat_rgb, flat_indices])

# 输出验证
print("原图像形状:", image.shape)
print("结果形状:", result.shape)
print("\n结果示例(每行:R G B 行号 列号):")
print(result)

补充说明

  • 默认生成的索引是从0开始的,如果需要从1开始计数,只需给索引数组加1:
    flat_indices = np.indices((n, m)).reshape(2, -1).T + 1
    
  • 最终结果的每一行严格对应原图像中像素的位置:第i行对应原图像中flat_indices[i][0]行、flat_indices[i][1]列的像素RGB值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:02:49