OpenCV中Mat的列向量归一化

OpenCV中Mat的列向量归一化

http://blog.csdn.net/shaoxiaohu1/article/details/8287528

 

OpenCV中Mat的列向量归一化

标签: OpenCV Mat 列向量 归一化
 分类:
 
 

        OpenCV 中虽然有normalize这个函数,但是却没有Matlab中normc这样只对Matlab中各列向量的归一化函数。好在我们可以多写几段代码来实现这种功能。

代码如下:

[cpp] view plain copy
 
  1. double a[6] = {1, 2, 3, 4, 5, 6};  
  2. Mat aa(2, 3, CV_64F, a);  
  3.       
  4. Mat temp1, temp2, temp3;  
  5. pow(aa, 2, temp1);  
  6. reduce(temp1, temp2, 0, CV_REDUCE_SUM); // calculate sum of each col  
  7. sqrt(temp2, temp2);   
  8. repeat(temp2, aa.rows, 1, temp3);  
  9. divide(aa, temp3, aa);  

        其中 reduce函数是将计算各列向量的元素之和,相当于Matlab中的sum;repeat 函数是将temp2扩展为与aa相同大小的矩阵,相当于Matlab中的repmat。

实现各行向量的归一化,是同样的道理。

PS: OpenCV函数中,声明 src 与 dst 的变量要尽可能地不同,除了那些进行点计算的函数(如 add, divide,normalize等,这是我暂时得到的结论),在其它函数中如果src与dst变量名相同,得到的结果很有可能是错误的

OpenCV还有很多不太清楚的地方,欢迎各位的指点和讨论。

原文地址:https://www.cnblogs.com/donaldlee2008/p/5230013.html