OpenCV规格化函数,结果不等于1
OpenCV Normalize Function, Result Does Not Sum To One
我在下面的代码中使用normalize函数。我的理解是,将直方图归一化会导致二进制数相加为1?但当我把它们加起来的时候,我得到的结果总是比一高。我不知道是我做错了什么,还是误解了函数的作用?
//read in image
Mat img = imread("image.jpg",1);
vector<Mat> planes;
split(img, planes);
//calculate hist
MatND hist;
int nbins = 256; // hold 256 levels
int hsize[] = { nbins }; // one dimension
float range[] = { 0, 255 };
const float *ranges[] = { range };
int chnls[] = {0};
calcHist(&planes[0], 1, chnls, Mat(), hist,1,hsize,ranges);
//normalise
normalize(hist,hist,1);
float tot = 0;
for( int n = 0;n < nbins; n++ )
{
float binVal = hist.at<float>(n);
tot+=binVal;
}
cout<<tot;
归一化数组的和不等于1,但分量平方和的平方根等于1,例如在向量中:
当出现以下情况时,它将被规范化:sqrt(x^2+y^2+z^2)=1
*这适用于矢量
在OpenCV-直方图-归一化中,这里描述了OpenCV直方图归一化,应该很清楚(在阅读规范后),它不必求和为1
相关文章:
- 为什么 std::round(sin(pi/6)) 不等于 1?
- 你怎么编码,如果x不等于一个数字,程序就会退出
- u张量模型输出不等于预期输出
- 虽然不等于陈述和/或差异
- 我的循环超时并且不显示结果
- 这种关系不等于定义良好的表达式吗?
- 向量和 for 不产生结果
- OpenGL 版本不等于支持的着色器版本
- 两个 4 位位字段加起来不等于一个字节的大小 - 如何修复?
- 如果整数不等于 0,则将其减小为 1
- C 循环虽然不等于任何两个值
- vb.net单不等于c float
- 如何获取C编译器#Error如果大小(struct ..)不等于给定的数字
- C++ 而语句不等于检查
- 当结果超过 100 时,程序不显示结果
- MySQL C++ 不读取结果
- 有没有办法检查int是否不等于数组中的所有值?(C )
- 整数数组中的元素数量不等于其大小
- 使用 boost 解析符号链接时,结果不等于原始路径名
- OpenCV规格化函数,结果不等于1