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

如何获取图像Numpy数组特定索引的三通道像素值?

解决Numpy图像数组的多位置三通道索引问题

你可以通过两种简洁的Numpy索引方式实现需求,直接获取每个坐标对应的三通道像素值:

方法一:拆分索引为行/列数组直接索引

Numpy支持将多维索引拆分为对应轴的一维数组,结合通道轴的全选符号:,就能快速提取目标像素:

import numpy as np

# 模拟你的图像数组(形状256×256×3)
img = np.random.randint(0, 255, (256, 256, 3), dtype=np.uint8)
# 模拟你的索引数组(形状N×2)
idx = np.array([[3, 230], [3, 231], [114, 151], [115, 150]], dtype=np.int64)

# 从索引数组中拆分出所有行索引和列索引
rows = idx[:, 0]
cols = idx[:, 1]

# 提取对应位置的三通道值,结果形状为(N, 3)
pixel_values = img[rows, cols, :]

执行后pixel_values的每一行就是对应坐标的R、G、B三通道数值。

方法二:使用np.take_along_axis函数

如果需要更灵活的轴对齐操作,可以用take_along_axis,先扩展索引数组的维度匹配图像的通道轴:

import numpy as np

img = np.random.randint(0, 255, (256, 256, 3), dtype=np.uint8)
idx = np.array([[3, 230], [3, 231], [114, 151], [115, 150]], dtype=np.int64)

# 给索引数组添加通道维度,形状变为(N, 2, 1)
idx_expanded = idx[:, :, np.newaxis]
# 沿着前两个轴提取所有通道的像素值
pixel_values = np.take_along_axis(img, idx_expanded, axis=(0, 1))
# 压缩多余的维度,得到最终(N, 3)的结果
pixel_values = pixel_values.squeeze(axis=1)

两种方法的输出结果完全一致,第一种更简洁高效,是日常处理这类场景的首选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:02:51