繁体   English   中英

OPENCV 2.4.9 cv2eigen语义错误

[英]OPENCV 2.4.9 cv2eigen semantic error

我正在尝试使用cv2eigen将cv :: Mat转换为Eigen :: Mat,然后使用eigen2cv转换回我(我知道最好为此使用Eigen :: Map,但这是另一回事)。

我在ubuntu 12.04 LTS上将OpenCV 2.4.9和eigen3 3.0.5与Eclipse 3.7.2结合使用

但是,即使是简单的例子

#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;
using namespace Eigen;

int main() {

    cv::Mat_<float> a = Mat_<float>::ones(2,2);
    Eigen::Matrix<float,Dynamic,Dynamic> b;
    cv2eigen(a,b);

    return 0;
}

(主体取自cv :: Mat转换为Eigen-Matrix并返回 )我得到以下编译错误:

无效的参数'候选者为:void cv2eigen(const cv :: Matx <#0,1,#1>&,?&)void cv2eigen(const cv :: Matx <#0,#1,#2>&,?& )void cv2eigen(const cv :: Matx <#0,#1,1>&,?&)void cv2eigen(const cv :: Mat&,?&)void cv2eigen(const cv :: Matx <#0,#1 ,#2>&,?&)void cv2eigen(const cv :: Mat&,?&)'simpleExample.cpp / simpleExample_proj-Debug @ build / [源目录]第17行语义错误

我偷看了opencv2 / core / eigen.hpp并假设我要调用的方法如下:

    template<typename _Tp>
    void cv2eigen( const Mat& src,
                   Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst )
    {
        ...
    }

似乎参数的类型(即矩阵)有问题,但我无法弄清楚-相同的代码似乎对其他人有用。 任何帮助/提示将不胜感激!

PS:如果我忘了发布任何重要细节,我很抱歉,请告诉我,我会解决的。

编辑我可能会提到它:我正在使用ubuntu随附的股票gcc版本4.6.3。

这对我有用:

#define EIGEN_RUNTIME_NO_MALLOC // Define this symbol to enable runtime tests for allocations
...
Mat src(N_rows,N_cols,CV_64FC1);    
MatrixXd X=MatrixXd(src.rows,src.cols);
    //  openCV -> Eigen 
    cv2eigen(src,X);
...

对于float,应使用MatrixXf和CV_32FC1矩阵类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM