c++ - 将 CV::Mat 转换为 Arma::mat

标签 c++ opencv armadillo

我尝试将 Opencv 中的表单矩阵转换为 Armadillo 中的矩阵

我在 this link 中找到了这个函数

但是当我尝试调用它时出现错误:

  1. 错误 C2783:“arma::Mat cvMat2armaMat(cv::Mat &)”:无法推断“T3”的模板参数
  2. IntelliSense:函数模板“cvMat2armaMat”的实例与参数列表不匹配

这是函数:

template<class T3>
 arma::Mat <T3> cvMat2armaMat(cv::Mat & cvMatIn) 
{ 
    return armaConv (cvMatIn.data, cvMatIn.rows, cvMatIn.cols,false); 

}

这是函数调用(调用func时报错)

cv::Mat CurrentImage    = imread(path, 0);

arma::mat singleImage = cvMat2armaMat (CurrentImage);

我该怎么办?

最佳答案

您需要指定 arma::mat<XXX> 的类型那cvMat2armaMat()返回。
什么是 armaConv ?
也许你的意思是:

template<class T3>
arma::Mat <T3> cvMat2armaMat(cv::Mat & cvMatIn) 
{ 
    return arma::Mat <T3> (cvMatIn.data, cvMatIn.rows, cvMatIn.cols,false); 
}

调用是这样的:

auto singleImage = cvMat2armaMat<float>(CurrentImage);

或者你需要 switchcv::Mat 上类型。

关于c++ - 将 CV::Mat 转换为 Arma::mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118862/

相关文章:

android - OpenCV warp透视旋转不一致

openmp - 用于矩阵向量乘积的 Rcpp Parallel 或 openmp

r - 有没有更快的方法在 Rcpp/c++ 中进行 Cholesky 分解?

c++ - 为什么虚拟析构函数需要删除运算符

c++ - OpenCV 矩阵比较器不起作用?

c++ - 考虑到危险,为什么项目使用 -I include 开关?

opencv - 来自终端的示例程序无法运行

C++ - 计算 PCA 的框架( Armadillo 除外)

c++ - "int a;"是 C 和 C++ 中的声明还是定义?

c++ - 带空括号的默认构造函数