计算 Mat OpenCV 子集的总和

Posted

技术标签:

【中文标题】计算 Mat OpenCV 子集的总和【英文标题】:Calculating sum of a subset of Mat OpenCV 【发布时间】:2015-06-14 22:11:11 【问题描述】:

我们可以不使用任何循环直接计算 OpenCV (C++) 中 Mat 元素子集的总和吗?

示例:Mat b_hist,有 1 列和 256 行。如何计算 0 到 105 行或 106 到 150 行的总和?

我知道 sum(b_hist) 会给出整个 Mat 的总和。我怎样才能得到一些子集?有没有类似的方法?有人可以介绍一下吗?

【问题讨论】:

你可以试试 yourMat(cv::Rect(...)) 来引用一个子垫 【参考方案1】:

您可以先使用cv::Range 获取您想要的子垫,然后对它们求和:

cv::Mat sub_mat_1 = mat(cv::Range(0, 106),   cv::Range::all());
cv::Mat sub_mat_2 = mat(cv::Range(106, 151), cv::Range::all());

std::cout << cv::sum(sub_mat_1).val[0] << std::endl;
std::cout << cv::sum(sub_mat_2).val[0] << std::endl;

【讨论】:

以上是关于计算 Mat OpenCV 子集的总和的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV:获取 Mat 值的总数

OpenCV C++:根据存储在 int 向量中的索引为 Mat 类型数据创建列范围

opencv编程中cvMat到Mat如何进行数据转换?

如何在 OpenCV Mat 中保留固定的缓冲区大小?

如何在 OpenCV 中计算 Mat 的最大像素值 [重复]

在opencv中,使用Mat类型计算马氏距离太慢了。如何提高效率?