我有一个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]

最佳答案

import cv2

## Read the image into `BGR`: (H,W,3), [[B,G,R],...]
img = cv2.imread("test.png")

## Get shape
H,W = img.shape[:2]

## calculate
avg = img.reshape(-1,3).sum(axis=0)/(H*W)
print(avg)

关于python - 使用numpy计算平均栅格值(快速),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48160105/

10-09 20:21