您的位置:首页 > 运维架构

OpenCV中Mat的列向量归一化

2016-03-01 10:30 225 查看
OpenCV中Mat的列向量归一化

/article/1896212.html

OpenCV中Mat的列向量归一化

标签: OpenCV Mat 列向量 归一化
2012-12-12 17:32 4907人阅读 评论(2) 收藏 举报


分类:

图像与OpenCV(15)

VC++(13)


版权声明:本文为shaoxiaohu原创文章,欢迎转载,请注明出处,谢谢。

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

代码如下:

[cpp] view plain copy

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还有很多不太清楚的地方,欢迎各位的指点和讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: