如何测量独特ROI中的RGB平均值?

时间:2019-02-24 19:25:14

标签: python numpy rgb cv2 roi

我有两个图像,一个是分析图像,另一个是ROI Mask图像(下面是ROI Mask图像)。

我要做的是测量由ROI蒙版图像选择的分析图像区域中的RGB平均值。我通过使用for循环来完成此操作,但是它花费的时间太长。

有什么办法可以简化这个过程?

import cv2
import numpy as np
from statistics import mean
img=cv2.imread("Analysis.jpg", 1)
mask=cv2.imread("ROI_Mask.jpg", 0)
height = im.shape[0]
width = im.shape[1]
R_value=[]
G_value=[]
B_value=[]
for x in range(width):
 for y in range(height):
  if mask[y][x]!=0:
   b,g,r=img[y][x]
   R_value.append(r)
   G_value.append(g)
   B_value.append(b)
  else:
   pass
print(np.mean(R_value))

ROI Mask Image

1 个答案:

答案 0 :(得分:2)

您可以像这样通过boolean indexing将代码矢量化:

b = mask > 0
B_value, G_value, R_value = img[b].T
print(R_value.mean())