平均而言,权重点向中心更重。
Weigh points toward center more heavily in average.
使用 PIL 和 Python 2.7。
我有以下代码来确定图像是大部分是暗的还是亮的。
def blackWhite(image):
'''Return `True` if the image is mostly white, else `False`'''
l=image.convert('L').load()
w,h=image.size
lums=sum([[l[x,y] for x in range(w)] for y in range(h)],[])
return sum(lums)/float(len(lums))>127
我正在尝试修改它,使指向图像中心的点比外面的点更重。
到目前为止,我已经编写了这段代码:
def blackWhite(image):
'''Return `True` if the image is mostly white, else `False` Weigh center pixels more heavily.'''
def weight(x,y):
'''Return the weight of the point at (x,y) based on function y = -0.5|x-8|+4'''
return (-0.5*abs(x-8)+4)*(-0.5*abs(x-8)+4)
l=image.convert('L').load()
w,h=image.size
lums=sum([[l[x,y] for x in range(w)] for y in range(h)],[])
weights=sum([[weight(x,y) for x in range(w)] for y in range(h)],[])
weighted=[x*weights[n] for n,x in enumerate(lums)]
return (sum(weighted)/float(len(weighted)))/sum(weights)
这个 returns 的值不是我期望的值,我期望值超过 255。这段代码中的错误在哪里?
抱歉,我的公式不对。最后一行不应除以加权的长度,然后除以权重之和,而应仅除以权重之和。
return sum(weighted)/sum(weights)
使用 PIL 和 Python 2.7。
我有以下代码来确定图像是大部分是暗的还是亮的。
def blackWhite(image):
'''Return `True` if the image is mostly white, else `False`'''
l=image.convert('L').load()
w,h=image.size
lums=sum([[l[x,y] for x in range(w)] for y in range(h)],[])
return sum(lums)/float(len(lums))>127
我正在尝试修改它,使指向图像中心的点比外面的点更重。
到目前为止,我已经编写了这段代码:
def blackWhite(image):
'''Return `True` if the image is mostly white, else `False` Weigh center pixels more heavily.'''
def weight(x,y):
'''Return the weight of the point at (x,y) based on function y = -0.5|x-8|+4'''
return (-0.5*abs(x-8)+4)*(-0.5*abs(x-8)+4)
l=image.convert('L').load()
w,h=image.size
lums=sum([[l[x,y] for x in range(w)] for y in range(h)],[])
weights=sum([[weight(x,y) for x in range(w)] for y in range(h)],[])
weighted=[x*weights[n] for n,x in enumerate(lums)]
return (sum(weighted)/float(len(weighted)))/sum(weights)
这个 returns 的值不是我期望的值,我期望值超过 255。这段代码中的错误在哪里?
抱歉,我的公式不对。最后一行不应除以加权的长度,然后除以权重之和,而应仅除以权重之和。
return sum(weighted)/sum(weights)