图像处理:线样本的平均值
Image processing : Mean of line sample
我想知道我的图像源中每一列的 mean
。目标是当第一列的平均值为 0(我所有的像素都是黑色)时,布尔值切换为离开 while
。
我不知道我是使用 vector
、Mat
函数、Line
还是其他方式。
您可以计算 mean(和 sum、min、max) 每个 column (or row) in a matrix using 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_SUM
或CV_REDUCE_MAX
,即可以对所有像素求和,也可以只取最大值。在任何情况下,当列(行)仅包含零值时,结果将为零。
我想知道我的图像源中每一列的 mean
。目标是当第一列的平均值为 0(我所有的像素都是黑色)时,布尔值切换为离开 while
。
我不知道我是使用 vector
、Mat
函数、Line
还是其他方式。
您可以计算 mean(和 sum、min、max) 每个 column (or row) in a matrix using 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_SUM
或CV_REDUCE_MAX
,即可以对所有像素求和,也可以只取最大值。在任何情况下,当列(行)仅包含零值时,结果将为零。