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

如何根据像素初始亮度修改图像中对应像素的颜色

基于PIL实现彩色图像指定亮度范围像素置黑实现方案

不需要提前将彩色图像转换为灰度图,可直接读取每个像素的RGB值计算亮度,匹配目标范围后直接修改原像素值即可,以下提供两种常用实现方式:

方式1:逐像素遍历实现(逻辑直观,适合小尺寸图像)

核心思路是遍历图像所有像素点,逐个计算亮度后做条件判断修改:

from PIL import Image

# 读取图像,统一转RGB模式兼容带透明通道的png图像
img = Image.open("你的输入图像路径.jpg").convert("RGB")
width, height = img.size
# 亮度阈值,可根据需求修改
LUMINANCE_THRESHOLD = 50

for x in range(width):
    for y in range(height):
        r, g, b = img.getpixel((x, y))
        # 按RGB平均值计算亮度,若需要人眼感知更准确的加权亮度,可替换为 0.299*r + 0.587*g + 0.114*b
        luminance = (r + g + b) / 3
        if luminance < LUMINANCE_THRESHOLD:
            # 符合条件的像素置为黑色
            img.putpixel((x, y), (0, 0, 0))

# 保存处理后的图像
img.save("你的输出图像路径.jpg")

如果需要修改其他亮度范围(比如亮度在50~100之间的像素置黑),仅需修改判断条件为if 50 < luminance < 100即可。

方式2:Numpy向量化实现(高效快速,适合大尺寸图像)

当处理分辨率较高的图像时,逐像素遍历速度较慢,使用numpy矩阵运算可大幅提升处理效率:

from PIL import Image
import numpy as np

img = Image.open("你的输入图像路径.jpg").convert("RGB")
img_arr = np.array(img)
LUMINANCE_THRESHOLD = 50

# 计算所有像素的亮度矩阵,同样可替换为加权亮度计算公式
luminance_arr = np.mean(img_arr, axis=2)
# 生成符合置黑条件的像素掩码
mask = luminance_arr < LUMINANCE_THRESHOLD
# 掩码覆盖的像素所有通道置为0
img_arr[mask] = [0, 0, 0]

# 转换回PIL图像并保存
processed_img = Image.fromarray(img_arr)
processed_img.save("你的输出图像路径.jpg")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:05