如何找出图像的平均像素值,从顶部和底部扫描它?

Gki*_*i27 0 python opencv numpy

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

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

Moh*_*ani 7

您可以使用np.average

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

在此处输入图片说明

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

crop_img = img[:1000, :]
plt.imshow(crop_img) 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

np.average(crop_img)
> 221.7606454078586
Run Code Online (Sandbox Code Playgroud)

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

np.average(crop_img, axis = (0,1))
array([219.85728484, 220.16578896, 225.25886241])
Run Code Online (Sandbox Code Playgroud)

如果您只想对单个通道求平均值,请说 red:

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

同样,您可以使用np.mean

  • 老实说,这是一个写得很好的答案——非常感谢! (2认同)