opencv常用函数-计算

来源:互联网 发布:迪凡软件 编辑:程序博客网 时间:2024/06/07 07:12

1. cv::meanStdDev ( img, mean, stddev ); //求均值方差

例如:

cv::Mat   img; 

Scalar     mean; 

Scalar     stddev;

cv::meanStdDev ( img, mean, stddev ); 

uchar       mean_pxl = mean.val[0]; 

uchar  stddev_pxl = stddev.val[0];


备注:

typedef struct Scalar{    double val[4];}Scalar;

例如:Scalar s;

如果使用的图像是1通道的,则s.val[0]中存储数据

如果使用的图像是3通道的,则s.val[0],s.val[1],s.val[2]中存储数据


例如:opencv3.0

Mat tmp_m, tmp_sd;

double m = 0, sd = 0; 

meanStdDev(gray, tmp_m, tmp_sd); 

m = tmp_m.at<double>(0,0);

sd = tmp_sd.at<double>(0,0); 


备注:

meanStdDev计算的均值和标准差都以Mat形式返回,这里返回的是1X1的矩阵。所以访问结果,要访问Mat的元素。


2. void minMaxLoc( const Mat& src,  double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat() );  //求最大最小值及其对应的位置


例如:

double maxVal = 0; //最大值一定要赋初值,否则运行时会报错Point maxLoc;minMaxLoc(image, NULL, &maxVal, NULL, &maxLoc);

备注:

如果不需要最小值、最大值及其对应的位置就可以直接赋值NULL或者0;


3.


4.


0 0