Mat数据元素的访问:
Mat c1 = (Mat_<double>(3, 3) << 1, 5, 6, 2, 4, 2, 5, 9, 4);
Mat c2(c1);
sortIdx(c1, c2, SORT_EVERY_COLUMN + SORT_ASCENDING);
cout << "c1: \n" << c1 << endl;
cout << "c2: \n" << c2 << endl;
double c1var = 0.0;
varMat(c1, 4.5, c1var);
cout << " c1var: " << c1var << endl;
void varMat(Mat& inputImg, double mean, double var)
{
cout << " come in the varMat function " << endl;
double sum = 0.0;
int rowNumber = inputImg.rows;
int colNumber = inputImg.cols * inputImg.channels();
for (int i = 0; i < rowNumber; i++)
{
uchar* data = inputImg.ptr<uchar>(i);
for (int j = 0; j < colNumber; j++)
{
//cout << " come in the varMat function 222222222222222222" << endl;
sum =data[j] - mean + sum;
cout << "j : " << j << " data[j]:" << data[j] <<" mean: "<<mean << " sum: " << sum << endl;
}
cout << i << " come in the varMat function 111 " << sum << endl;
}
cout << "sum : " << sum << endl;
var = sum / rowNumber * inputImg.cols;
}
代码修改,函数定义的参数列表,最后一个返回参数要 加一个取址符。才能正常返回到 调用函数中。
double c1var = 0.0; // C++ 声明浮点变量是,必须要附一个初始值,否则后面直接用回报错
varMat(c1, 4.5, c1var);
cout << " c1var: " << c1var << endl;
void varMat(Mat& inputImg, double mean, double& var)