2015-11-15 27 views
0

我想知道我的图像源上每列的mean。我们的目标是当平均值为0的所有像素(我的所有像素都是黑色)的第一列布尔值为开关while图像处理:线条样本的平均值

我不知道我是否使用vectorMat功能,Line或其他方式。

回答

1

可以使用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,即你可以总结的所有像素或只取最大值。在任何情况下,当一个列(行)只包含零值时,结果将为零。

+0

令人惊叹!非常感谢你。 –