C++ 计算其他图像像素满足条件的像素值的平均值

C++ 计算其他图像像素满足条件的像素值的平均值,c++,opencv,opencv3.0,C++,Opencv,Opencv3.0,分割后,我有标签和灰色图像。我想计算每个标签的平均强度,即标签像素具有特定值的强度值的平均值。大概是这样的: // both are 1-channel cv::Mat gray, labels // ... float avg=cv::mean(gray(labels==1)); cv::MatExpr不会(至少不会自动)转换为cv::Range,而cv::Range可以用作灰度图像的ROI,因此本示例不编译 除了显式写入循环之外,还有什么简单的方法吗?使用掩码: float avg=cv:

分割后,我有
标签
灰色
图像。我想计算每个标签的平均强度,即标签像素具有特定值的强度值的平均值。大概是这样的:

// both are 1-channel
cv::Mat gray, labels
// ...
float avg=cv::mean(gray(labels==1));
cv::MatExpr不会(至少不会自动)转换为cv::Range,而cv::Range可以用作灰度图像的ROI,因此本示例不编译

除了显式写入循环之外,还有什么简单的方法吗?

使用掩码:

float avg=cv::mean(gray, (labels==1));
“标签”的尺寸必须与“灰色”的尺寸相同使用遮罩:

float avg=cv::mean(gray, (labels==1));

“标签”的尺寸必须与“灰色”的尺寸相同

因为cv::mean允许使用掩码,所以您可以使用该可选参数:C++:Scalar mean(InputArray src,InputArray mask=noArray())因为cv::mean允许使用掩码,所以您可以使用该可选参数:C++:Scalar mean(InputArray src,InputArray mask=noArray())啊,太棒了!谢谢。啊,太好了!谢谢