PS:转载+翻译(有侵权告诉我,立马删除),为了自己记录;
以下几个方法每个方法都返回一个相近值,但与其他方法不完全相同。另外,除了最后一个方法,所有方法的运行速度都差不多,最后一个方法的运行速度要慢得多,这取决于图像的大小
对200幅图像进行了模拟测试。发现方法2和方法4给出了几乎相同的结果。方法3和方法5也几乎相同。方法1紧随方法3和方法5之后(有一些例外)。
def brightness( im_file ):
im = Image.open(im_file).convert('L')
stat = ImageStat.Stat(im)
return stat.mean[0]
def brightness( im_file ):
im = Image.open(im_file).convert('L')
stat = ImageStat.Stat(im)
return stat.rms[0]
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
r,g,b = stat.mean
return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
r,g,b = stat.rms
return math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))
5 计算像素的“感知亮度”,然后返回平均值:
def brightness( im_file ):
im = Image.open(im_file)
stat = ImageStat.Stat(im)
gs = (math.sqrt(0.241*(r**2) + 0.691*(g**2) + 0.068*(b**2))
for r,g,b in im.getdata())
return sum(gs)/stat.count[0]