OpenCV中Mat的列向量归一化

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

代码如下:

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

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

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

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

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


 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值