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

如何将RGB图像转换为含像素坐标与RGB值的Pandas DataFrame

给RGB像素DataFrame添加x/y坐标的解决方案

嘿,刚好能帮你解决这个问题!你已经搞定了RGB值的提取,差的就是生成对应每个像素的x(列坐标)和y(行坐标)啦。

问题的核心是:PIL的getdata()会把图像像素按从上到下、从左到右的顺序展平成一维数组,但不会附带位置信息。我们需要手动生成和这个顺序完全匹配的x/y坐标数组,再合并到DataFrame里。

完整实现代码

from PIL import Image
import numpy as np
import pandas as pd

# 1. 读取图像并提取RGB像素
colourImg = Image.open("test.png")
colourPixels = colourImg.convert("RGB")
colourArray = np.array(colourPixels.getdata())

# 2. 获取图像的宽高,用于生成坐标
width, height = colourImg.size

# 3. 生成匹配像素顺序的x/y坐标
# 创建坐标网格:x是从0到width-1的列索引,y是从0到height-1的行索引
x_coords, y_coords = np.meshgrid(np.arange(width), np.arange(height))
# 把二维网格展平成一维数组,和colourArray的长度完全一致
x_flat = x_coords.flatten()
y_flat = y_coords.flatten()

# 4. 合并坐标和RGB值到DataFrame
df = pd.DataFrame({
    "x": x_flat,
    "y": y_flat,
    "red": colourArray[:, 0],
    "green": colourArray[:, 1],
    "blue": colourArray[:, 2]
})

# 可选:查看前几行验证结果
print(df.head())

关键细节说明

  • x坐标是从左到右的列索引(范围0到width-1),y坐标是从上到下的行索引(范围0到height-1),完全匹配你给出的示例输出顺序。
  • np.meshgrid生成的坐标网格,展平后的顺序和getdata()的像素顺序完全一致,不用担心错位问题。
  • 如果需要调整坐标的起始值(比如从1开始),只需要把np.arange(width)改成np.arange(1, width+1)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:39:06