我试图根据图像的亮度质量评分,我的代码对全色图像很好,但是当我试图使用透明的png时,它会抛出一个错误:r,g,b=统计平均值,太多的值无法解包…,任何提示或提示将不胜感激。在
这是我的代码:
def trim(im):
bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
diff = ImageChops.difference(im, bg)
diff = ImageChops.add(diff, diff, 2.0, -100)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox)
def brightness(stat):
r,g,b = stat.mean
brightness = math.sqrt(0.241 * (r ** 2) + 0.691 * (g ** 2) + 0.068 * (b ** 2))
print 'perc brightness %s' % brightness
return 1 - math.fabs(brightness / 100 - 1)
score_points = {
'face': 120,
'sat' : 50,
'sharpness': 100,
'bri': 50,
'con': 100
}
filename = "tmp/thumb_2.png"
im = Image.open(filename)
# crop all black borders
im = trim(im)
# check perceived brightness
v = ImageStat.Stat(im)
b = brightness(v) * score_points['bri']
print 'Brightness score: %s' % b
目前没有回答
相关问题 更多 >
编程相关推荐