首页 > 解决方案 > 如何找出图像的平均像素值,从顶部和底部扫描它?

问题描述

所以,我有一张图像,我想从顶部扫描图像最多 5 行。之后,我想计算扫描区域的平均像素颜色值。怎么做?

从底部扫描到 5 行也是如此。 要扫描的图像

标签: pythonnumpyopencv

解决方案


您可以使用np.average

img = cv2.imread('img.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #convert it to RGB channel
plt.imshow(img)

在此处输入图像描述

让我们裁剪前 1000 行(图像中的前 5 行是白色的,因此平均值仅为 255)。

crop_img = img[:1000, :]
plt.imshow(crop_img) 

在此处输入图像描述

如果要平均整个裁剪图像(包括 3 个通道 RGB),请使用:

np.average(crop_img)
> 221.7606454078586

如果要平均超过 3 个通道,请使用:

np.average(crop_img, axis = (0,1))
array([219.85728484, 220.16578896, 225.25886241])

如果您只想对单个通道进行平均,请说红色:

np.average(crop_img[:, :, 0]) #replace 0 with 1 for green channel and with 2 for blue channel
219.85728484414187 

同样,您可以使用np.mean


推荐阅读