cv::NormTypes::NORM_MINMAX
这个参数在normalize函数里面用到。
| void cv::normalize | ( | InputArray | src, |
| InputOutputArray | dst, | ||
| double | alpha = 1, |
||
| double | beta = 0, |
||
| int | norm_type = NORM_L2, |
||
| int | dtype = -1, |
||
| InputArray | mask = noArray() |
||
| ) |
通常情况下用到这个参数比较多。
那这个参数是要怎么样根据原图计算输出图像的呢?
下面是计算的公式,蛮简单的。
Mat dst1;float beta = 10.0f;float alpha = 0.0f;Mat img = (Mat_<float>(3, 3) << 1.2, 3.4, 5.6,7.8, 9.1, 2.3,4.5, 6.7, 8.9);normalize(img, dst1, alpha, beta, NORM_MINMAX);Mat dst2 = Mat::zeros(img.size(), img.type());double minval, maxval;minMaxLoc(img, &minval, &maxval);for (int row = 0; row < img.rows; row++){for (int col = 0; col < img.cols; col++){//公式实现dst2.at<float>(row, col) = ((beta - alpha) / (float(maxval) - float(minval))) * (img.at<float>(row, col) - float(minval));}}
以下是上面的两种方式的计算结果:
normalize函数的计算结果dst1:
0 2.78481 5.56962 8.35443 10 1.3924 4.17721 6.96202 9.74683
根据公式的计算结果dst2:
0 2.78481 5.56962 8.35443 10 1.3924 4.17721 6.96202 9.74683