1. reduce
函数原型:void cv::reduce(InputArray _src, OutputArray _dst, int dim, int rtype, int dtype=-1)
src :输入矩阵
dst :输出的通过处理输入矩阵的所有行/列而得到的单行/列向量
dim :矩阵被简化后的维数索引.
0-意味着矩阵被处理成一行,
1-意味着矩阵被处理成为一列,
-1-维数将根据输出向量的大小自动选择.
rtype:简化操作的方式,可以有以下几种取值:
CV_REDUCE_SUM-输出是矩阵的所有行/列的和.
CV_REDUCE_AVG-输出是矩阵的所有行/列的平均向量.
CV_REDUCE_MAX-输出是矩阵的所有行/列的最大值.
CV_REDUCE_MIN-输出是矩阵的所有行/列的最小值.
2. reduce 应用-灰度投影
void grayProjection(Mat &src, Mat &Hdist, Mat &Vdist)
{
//投影法
Mat image = src.clone();
int width = src.cols;
int height = src.rows;
Hdist = Mat::zeros(height, 1, CV_32FC1);//CV_32FC1,可根据实际取值范围修改
Vdist = Mat::zeros(1, width, CV_32FC1);
//沿水平方向投影,得到height行, 1列的矩阵
reduce(image, Hdist, 1, CV_REDUCE_SUM, CV_32FC1);//rtype要与创建dst的type一致
//沿垂直方向投影,得到1行,width列的矩阵
reduce(image, Vdist, 0, CV_REDUCE_SUM, CV_32FC1);//rtype要与创建dst的type一致
}
灰度投影可用于图像匹配、直线检测等,待更新;