diff --git a/openbr/core/eigenutils.cpp b/openbr/core/eigenutils.cpp index e0601d1..c701d44 100644 --- a/openbr/core/eigenutils.cpp +++ b/openbr/core/eigenutils.cpp @@ -137,3 +137,11 @@ Eigen::MatrixXf matrixToVector(const Eigen::MatrixXf matrix) { return vector; } +Eigen::MatrixXf toEigen(const Mat m) { + if (m.type() != CV_32F) + qFatal("Mat to Eigen Converstation only supports CV_32F"); + + Eigen::MatrixXf data(m.rows, m.cols); + return Eigen::Map(m.ptr(), m.rows, m.cols); +} + diff --git a/openbr/core/eigenutils.h b/openbr/core/eigenutils.h index 0bbc013..73a72e0 100644 --- a/openbr/core/eigenutils.h +++ b/openbr/core/eigenutils.h @@ -21,6 +21,8 @@ #include #include +#include + void writeEigen(Eigen::MatrixXf X, QString filename); void writeEigen(Eigen::MatrixXd X, QString filename); void writeEigen(Eigen::VectorXd X, QString filename); @@ -40,6 +42,9 @@ Eigen::MatrixXf removeRowCol(const Eigen::MatrixXf X, int row, int col); Eigen::MatrixXf pointsToMatrix(const QList points, bool isAffine=false); QList matrixToPoints(const Eigen::MatrixXf P); +//Convert cv::Mat to Eigen +Eigen::MatrixXf toEigen(const cv::Mat m); + template inline QDataStream &operator<<(QDataStream &stream, const Eigen::Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > &mat) {