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

标签 python numpy rgb cv2 roi

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

我想做的是测量 ROI Mask 图像选择的分析图像区域中的 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

最佳答案

您可以通过 boolean indexing 向量化您的代码像这样:

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

关于python - 如何测量独特 ROI 中的 RGB 均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855634/

相关文章:

python - Numpy 数组替代 for 循环

c# - 将 RGB 颜色转换为 CMYK?

c++ - OpenCV RGB 比较

jquery - 使用 selenium webdriver 单击 jquery 菜单项

python - 尝试大值时整数溢出 - 因式分解算法

python - 为什么单击下拉菜单选项会重置 x 范围?

python - 如何过滤numpy ndarray中的列

python - 在 Pandas 中如何替换列中的某些项目?

python - 矢量化中的数组索引

mysql - 在 MySQL 中将 RGB 转换为 HSL