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

如何从RGB像素值创建图像及Python像素处理相关问题

解答

1. 确定像素坐标并重组图像

PIL的getdata()返回的像素是行优先排列的(从左到右、从上到下遍历图像),可以通过图像的宽高计算每个像素的坐标:

from PIL import Image

filename = "INSERT_PATH_OF_IMAGE"
image = Image.open(filename)
width, height = image.size
pixels = list(image.getdata())

# 计算第i个像素的坐标
for i in range(len(pixels)):
    x = i % width
    y = i // width
    # 可按需处理坐标与像素值,如打印
    # print(f"坐标({x}, {y}):{pixels[i]}")

# 重组图像直接用Image.new和putdata即可
new_image = Image.new("RGB", (width, height))
new_image.putdata(pixels)
new_image.save("reconstructed_image.png")

如果后续要转用OpenCV,可将PIL图像转为numpy数组(OpenCV图像基于numpy数组,且为BGR顺序):

import numpy as np
# PIL RGB格式转OpenCV BGR格式
cv_image = np.array(image)[:, :, ::-1]

2. 输出(R,G,B)元组列表

你代码里的t变量已经是这种格式了,image.getdata()默认返回每个像素的(R,G,B)元组列表,直接打印即可:

from PIL import Image

filename = "INSERT_PATH_OF_IMAGE"
image = Image.open(filename)
pixel_tuples = list(image.getdata())
print(pixel_tuples)

如果要自行用r、g、b列表组合,用zip()函数即可:

r = list(image.getdata(0))
g = list(image.getdata(1))
b = list(image.getdata(2))
pixel_tuples = list(zip(r, g, b))
print(pixel_tuples)

3. 将结果保存到文本文件

用文件写入操作替代打印,避免终端溢出。若要生成可读性强的格式,可借助json模块:

from PIL import Image
import json

filename = "INSERT_PATH_OF_IMAGE"
image = Image.open(filename)
pixel_tuples = list(image.getdata())

# 写入文本文件
with open("pixel_data.txt", "w", encoding="utf-8") as f:
    # 用json.dumps格式化输出,提升可读性
    f.write(json.dumps(pixel_tuples, indent=2))

打开代码所在目录的Windows文件资源管理器,即可找到生成的pixel_data.txt。


学习资料建议

  • 先掌握Pillow(PIL)官方文档中的基础操作,比如像素读取、图像创建、格式转换等
  • 入门OpenCV时,重点理解numpy数组与图像的对应关系,以及核心函数(图像读取、像素访问、色彩空间转换等)
  • 可参考《Python图像处理:基于Pillow与OpenCV》这类书籍,兼顾基础理论与实践案例
  • 多关注StackOverflow的python-imaging-library和opencv-python标签,学习热门问题的解决方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:10:13