gpt4 book ai didi

python - 用于计算图像平均 RGB 值的基准函数

转载 作者:行者123 更新时间:2023-12-01 05:55:42 25 4
gpt4 key购买 nike

我通过两种方式实现了 Python 图像库图像的平均 RGB 值的计算:

1 - 使用列表

def getAverageRGB(image):
"""
Given PIL Image, return average value of color as (r, g, b)
"""
# no. of pixels in image
npixels = image.size[0]*image.size[1]
# get colors as [(cnt1, (r1, g1, b1)), ...]
cols = image.getcolors(npixels)
# get [(c1*r1, c1*g1, c1*g2),...]
sumRGB = [(x[0]*x[1][0], x[0]*x[1][1], x[0]*x[1][2]) for x in cols]
# calculate (sum(ci*ri)/np, sum(ci*gi)/np, sum(ci*bi)/np)
# the zip gives us [(c1*r1, c2*r2, ..), (c1*g1, c1*g2,...)...]
avg = tuple([sum(x)/npixels for x in zip(*sumRGB)])
return avg

2 - 使用 numpy

def getAverageRGBN(image):
"""
Given PIL Image, return average value of color as (r, g, b)
"""
# get image as numpy array
im = np.array(image)
# get shape
w,h,d = im.shape
# change shape
im.shape = (w*h, d)
# get average
return tuple(np.average(im, axis=0))

我惊讶地发现 #1 的运行速度比 #2 快大约 20%。

我正确使用 numpy 吗?有没有更好的方法来实现平均计算?

最佳答案

确实令人惊讶。

您可能想使用:

tuple(im.mean(axis=0))

计算你的平均值(r,g,b),但我怀疑它会改善很多事情。您是否尝试过分析 getAverageRGBN 并找到瓶颈?

关于python - 用于计算图像平均 RGB 值的基准函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com