OpenCV 中的矩阵乘法 - 结合 cv::Mat 和 cv::Scalar 对象

Posted

技术标签:

【中文标题】OpenCV 中的矩阵乘法 - 结合 cv::Mat 和 cv::Scalar 对象【英文标题】:Matrix Multiplication in OpenCV - Combining cv::Mat and cv::Scalar Objects 【发布时间】:2012-10-26 07:54:36 【问题描述】:

我正在尝试使用一些 OpenCV 库函数在 C++ 中实现不同的互相关算法。在某些时候,我需要对矩阵的行和列求和。我使用 cv::Mat 作为我的矩阵类,作为初学者,我很乐意使用 cv::Mat 进行一些基本的矩阵运算。我唯一的问题是我在 MATLAB 方面经验丰富,在这种小事情上真的很擅长。因此,我将根据 MA​​TLAB 代码提出我的要求(如果有人不了解 MATLAB,请提前道歉)。我所追求的是:

在 MATLAB 中,例如

gg = [1 1 1; 2 2 2; 3 3 3; 4 4 4]; % is a 4x3 matrix

sumGrows = (gg,1); % Sum of all rows - will be [10 10 10]; 1 means DIMENSION=ROWS
sumGcols = (gg,2); % Sum of all columns - [3; 6; 9; 12]; 2 means DIMENSION=COLUMNS

仅供参考,在 MATLAB 中,注释带有 %

如何在 OpenCV 中做到这一点?我知道 OpenCV 中有一个名为“sum”的函数,但它不返回 cv::Mat 对象。那我需要做一些静态/动态转换吗? AFAIK, sum() 的返回类型是标量。请指出正确的方向。

仅供参考,我不是学生!我是专业人士(曾经从事基于 Java 的开发和系统工程)。但目前接管了一个我必须进行基于 C++ 的实现的项目。

TIA

【问题讨论】:

【参考方案1】:

有一个cv::reduce 用于对行或列求和。

另请参阅此问题:Column sum of Opencv Matrix elements

【讨论】:

感谢您的推动!我希望我能给你一个+1,因为我的愚蠢问题不会(明显)恼火!对不起,我是新手,所以还没有投票的声誉:(为了让它不那么愚蠢,你有没有推荐的提供 OpenCV 教程的网站(除了 Willow Garage)? OpenCV有自己的网站opencv.org你可以在那里找到最新消息、官方教程和文档。 +1,用opencv有一段时间了,一直没注意cv::reduce 感谢大家不要把我当作业余爱好者!上次有人给了我低声誉,我不得不创建一个新帐户来发布我的问题!感谢所有积极的 cmets! @AndreyKamaev cv::reduce 不起作用并抱怨类型不匹配!但是我的源类型和目标类型都是 unsigned char 那么可能是什么问题?

以上是关于OpenCV 中的矩阵乘法 - 结合 cv::Mat 和 cv::Scalar 对象的主要内容,如果未能解决你的问题,请参考以下文章

大矩阵的Opencv乘法

寻找基本矩阵(矩阵乘法错误)

opencv六通道矩阵乘法

OpenCV 断言在矩阵乘法上失败

OpenCV逐元素矩阵乘法

OpenCV 简单的二维矩阵乘法失败