使用numpy(快速)计算平均栅格值

时间:2018-01-09 00:56:51

标签: python numpy opencv

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

1 个答案:

答案 0 :(得分:0)

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)