Python - 测量像素亮度

16
我该如何获取图像中特定像素的亮度测量值?我需要一种绝对的比较不同像素亮度的刻度。谢谢。

3
可能是确定RGB颜色亮度的公式的重复问题。 - Ignacio Vazquez-Abrams
2
复制可能会认为您只需要帮助处理这一部分 - 在这种情况下,“python”标签是完全无关紧要的,因为您不关心代码,只关心规模。如果您确实关心Python方面,则需要更多信息(PIL,PyQt4,其他内容?) - Chris Morgan
我建议您从标题和标签中删除Python,因为这不是特定于编程语言的。 - Vitor
我正在寻找一种用Python实现的方法,最好是用PIL或其他库中的单个函数来完成。我希望避免过多的手动计算。 - Double AA
http://graphicdesign.stackexchange.com/a/29383 - Double AA
1个回答

29

要获取像素的RGB值,您可以使用PIL

from PIL import Image
from math import sqrt
imag = Image.open("yourimage.yourextension")
#Convert the image te RGB if it is a .gif for example
imag = imag.convert ('RGB')
#coordinates of the pixel
X,Y = 0,0
#Get RGB
pixelRGB = imag.getpixel((X,Y))
R,G,B = pixelRGB 

那么,亮度就是从黑色到白色的一个比例尺,在将三个RGB值平均化后可以提取出来:

brightness = sum([R,G,B])/3 ##0 is dark (black) and 255 is bright (white)

或者你可以更深入地使用Ignacio Vazquez-Abrams评论的亮度公式:(确定RGB颜色亮度的公式)

#Standard
LuminanceA = (0.2126*R) + (0.7152*G) + (0.0722*B)
#Percieved A
LuminanceB = (0.299*R + 0.587*G + 0.114*B)
#Perceived B, slower to calculate
LuminanceC = sqrt(0.299*(R**2) + 0.587*(G**2) + 0.114*(B**2))

不应该是 pixelRGB = imag.getpixel((X,Y)) R,G,B = pixelRGB 而应该是 (R,G,B) = imag.getpixel((X,Y)) - RobotHumans
你怎么获取 alpha 组件呢? - Clangorous Chimera
1
LuminanceC 对我来说没有意义。你应该使用 0.299R²、0.587G² 和 0.114B² 的和的根,对吧 Saulpila? - Aiyion.Prime
1
我想是这样。那部分是从该块顶部的参考中复制的。显然在那里进行了更正。我会进行编辑。不过请注意,这个答案已经有将近七年的历史了。现在可能有更好的方法。 - Saúl Pilatowsky-Cameo
5
或者只需使用 .convert("L")。当将一张彩色图片转换为灰度图像(模式“L”)时,库会使用 ITU-R 601-2 亮度变换。 - Константин Ван

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接