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

获取图片X轴方向像素亮度值数组的Python脚本实现求助

获取图片中间水平线的亮度值数组(用于对比光扩散器效果)

直接修改你的代码就能实现需求,以下是两种常用的实现方式:

1. 获取整条水平线的所有像素亮度

适合需要精细数据的场景,返回中间行从左到右每一个像素的亮度值:

from PIL import Image

def get_full_middle_line_brightness(image_path):
    # 打开图片并转换为RGB格式
    imag = Image.open(image_path)
    imag = imag.convert('RGB')
    # 计算中间水平线的Y坐标(取整数行)
    middle_y = imag.height // 2
    brightness_values = []
    # 遍历X轴所有像素点
    for x in range(imag.width):
        r, g, b = imag.getpixel((x, middle_y))
        # 沿用你原有的RGB均值计算亮度
        brightness = (r + g + b) / 3
        brightness_values.append(brightness)
    return brightness_values

# 调用示例
brightness_array = get_full_middle_line_brightness("你的图片路径.jpg")
# 打印前10个值验证
print(brightness_array[:10])

2. 指定采样数量获取亮度值

如果图片宽度很大,不需要每个像素的数据,可以指定采样点数,均匀选取中间行的像素:

from PIL import Image

def get_sampled_middle_line_brightness(image_path, sample_num=100):
    imag = Image.open(image_path)
    imag = imag.convert('RGB')
    middle_y = imag.height // 2
    brightness_values = []
    # 计算采样间隔
    step = imag.width // sample_num
    # 按间隔遍历采样点
    for x in range(0, imag.width, step):
        # 防止x超出图片宽度边界
        x = min(x, imag.width - 1)
        r, g, b = imag.getpixel((x, middle_y))
        brightness = (r + g + b) / 3
        brightness_values.append(brightness)
    # 补充最后一个点,确保采样数量达标
    if len(brightness_values) < sample_num:
        r, g, b = imag.getpixel((imag.width - 1, middle_y))
        brightness_values.append((r + g + b) / 3)
    return brightness_values

# 调用示例,采样50个点
sampled_brightness = get_sampled_middle_line_brightness("你的图片路径.jpg", sample_num=50)
print(sampled_brightness)

生成亮度分布效果图

如果需要把亮度数据可视化成折线图,用matplotlib就能实现:

import matplotlib.pyplot as plt

# 获取亮度数据
brightness_data = get_full_middle_line_brightness("你的图片路径.jpg")
# 绘制折线图
plt.plot(brightness_data)
plt.title("图片中间水平线亮度分布")
plt.xlabel("X轴像素位置")
plt.ylabel("亮度值(0-255)")
plt.grid(True)
plt.show()

关键逻辑说明

  • middle_y = imag.height // 2:取图片高度的中间整数行,保证坐标是有效的像素位置
  • 亮度计算沿用你原有的RGB均值方法,结果范围0(黑)到255(白)
  • 采样模式通过step控制间隔,避免宽图生成过多数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:50:41