【发布时间】:2018-01-09 00:56:50
【问题描述】:
我有一个 JPEG 图像,我需要尽快计算每个栅格(红色、蓝色和绿色)的平均值。当我尝试使用两个 for 循环来访问每个像素并添加值时,该过程需要很长时间(大约 30 秒)。有没有办法快速计算平均栅格值(可能使用 numpy 和 OpenCV)?我使用的代码如下:
for i in range(width):
for j in range(height):
pix = im.getpixel((i,j))
redValues = redValues + pix[0]
greenValues = greenValues + pix[1]
blueValues = blueValues + pix[2]
【问题讨论】:
-
您能否提供一个最低限度的工作示例来测试您的代码?在尝试使用不同的库进行优化之前,您首先需要确定实际花费最多的时间。我的直觉是
im.getpixel((i,j))电话,但我不确定。 -
我会尝试类似:redValues = sum(im[:,:][0]) 但我不确定语法
-
See this discussion - 似乎 PIL 是测试过的最快的库。但是用当前版本测试不同的策略——线程已经很老了。