【问题标题】:Are OpenCV matrix operations faster than simple for loop iterations?OpenCV 矩阵运算是否比简单的循环迭代更快?
【发布时间】:2015-06-10 08:58:49
【问题描述】:

我想了解我是否应该更喜欢使用为 OpenCV 的 cv::Mat 类定义的矩阵运算,或者它们的计算时间是否与在双精度数组上使用 for 循环进行迭代相同。

【问题讨论】:

  • 你试过测量吗?
  • 其实我不认为有人知道答案,而无需对其进行测试。到目前为止,我决定自己实现该操作,因为只是向量/矩阵乘法。
  • 预写的矩阵库通常是经过优化的,您将很难达到相同的性能水平。如果本机矩阵运算很好地映射到您想做的工作,那么您完全有理由使用它们。如果他们不这样做,问题是什么?

标签: c++ c opencv optimization


【解决方案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 已优化,除非您有非常具体的示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多