我有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]
答案 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)