图像处理:线样本的平均值

时间:2015-11-15 03:24:33

标签: c++ opencv mean

我想知道我的图片来源上每列的mean。目标是当平均值为0(我的所有像素都是黑色)的第一列是布尔值时,切换为while

我不知道我是使用vectorMat函数,Line还是其他方式。

1 个答案:

答案 0 :(得分:1)

您可以计算每个列的 mean (和 sum min max (或)使用reduce

在矩阵中

这是一个小例子,展示了如何计算每列和每行的平均值。

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    // Create a random 1 channel matrix
    Mat1b img(10,20);
    randu(img, Scalar(0), Scalar(10));

    // Compute the mean of each column
    Mat1f colMean;
    reduce(img, colMean, 0, CV_REDUCE_AVG, CV_32F);

    // colMean is a 1x20 matrix (row matrix)

    // Compute the mean of each row
    Mat1f rowMean;
    reduce(img, rowMean, 1, CV_REDUCE_AVG, CV_32F);

    // rowMean is a 10x1 matrix (column matrix)

    return 0;
}

请注意,要检查列(行)中的值是否全为零,您还可以使用CV_REDUCE_SUMCV_REDUCE_MAX,即您可以对所有像素求和或仅取最大值。在每种情况下,当列(行)仅包含零值时,结果将为零。