OpenCV 矩阵运算是不是比简单的循环迭代更快?
Posted
技术标签:
【中文标题】OpenCV 矩阵运算是不是比简单的循环迭代更快?【英文标题】:Are OpenCV matrix operations faster than simple for loop iterations?OpenCV 矩阵运算是否比简单的循环迭代更快? 【发布时间】:2015-06-10 08:58:49 【问题描述】:我想了解我是否应该更喜欢使用为 OpenCV 的 cv::Mat 类定义的矩阵运算,或者它们的计算时间是否与在双精度数组上使用 for 循环进行迭代相同。
【问题讨论】:
你试过测量吗? 其实我不认为有人知道答案,而无需对其进行测试。到目前为止,我决定自己实现该操作,因为只是向量/矩阵乘法。 预写的矩阵库通常是经过优化的,您将很难达到相同的性能水平。如果本机矩阵运算很好地映射到您想做的工作,那么您完全有理由使用它们。如果他们不这样做,问题是什么? 【参考方案1】:OpenCV cv::Mat 类使用指针以使它们尽可能高效。话虽如此,如果您想做一个非常具体的操作,您可能会发现自己实施起来更快。
以下是来自 OpenCV 源代码的简单 cv::Mat 转置代码:
void MatOp::transpose(const MatExpr& expr, MatExpr& res) const
Mat m;
expr.op->assign(expr, m);
MatOp_T::makeExpr(res, m, 1);
【讨论】:
这似乎是CUDA代码,它与问题有什么关系? 更改了代码,关键是 OpenCV 已优化,除非您有非常具体的示例以上是关于OpenCV 矩阵运算是不是比简单的循环迭代更快?的主要内容,如果未能解决你的问题,请参考以下文章