【问题标题】:Difference between cv::Mat::t () and cv::transpose()cv::Mat::t () 和 cv::transpose() 的区别
【发布时间】:2023-03-29 21:10:01
【问题描述】:

opencv这两个转置有什么区别?

使用cv::Mat::t()

cv::Mat a;
a = a.t();

使用cv::transpose()

cv::Mat a;
cv::transpose(a,a);

我对效率特别感兴趣。

【问题讨论】:

  • 一个似乎就地,另一个写入单独的输出。
  • @KerrekSB 感谢您的评论。那么说第一个效率更高对吗?
  • 我不认为这是一个明智的问题。这两个函数做不同的事情。他们每个人都尽可能高效。
  • @KerrekSB 据我所知,就地做某事意味着不分配内存,这比非就地方法(如第二种方法)更有效。因此,在这种特殊情况下,第一种方法更有效。我错了吗?
  • 我和@KerrekSB 一起讨论这个问题。如果要使用转置来求解另一个表达式,则使用第一种方法,如果要转置矩阵,则使用第二种方法

标签: c++ opencv matrix transpose


【解决方案1】:

没有区别。这是来自opencv/modules/core/src/matop.cppcv::Mat::t() 的代码:

MatExpr MatExpr::t() const
{
    MatExpr e;
    op->transpose(*this, e);
    return e;
}

所以cv::Mat::t() 只是调用cv::transpose()

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多