From a0bb95c7216335064923f23196711079e20cee82 Mon Sep 17 00:00:00 2001 From: Brendan Klare Date: Mon, 29 Sep 2014 10:01:24 -0400 Subject: [PATCH] Simple helper method to convert from cv::Mat (32F) to Eigen::MatrixXf --- openbr/core/opencvutils.cpp | 8 ++++++++ openbr/core/opencvutils.h | 3 +++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/openbr/core/opencvutils.cpp b/openbr/core/opencvutils.cpp index 753daa8..f7516e0 100644 --- a/openbr/core/opencvutils.cpp +++ b/openbr/core/opencvutils.cpp @@ -336,6 +336,14 @@ bool OpenCVUtils::overlaps(const QList &posRects, const Rect &negRect, dou return false; } +Eigen::MatrixXf OpenCVUtils::toEigen(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); +} + QDataStream &operator<<(QDataStream &stream, const Mat &m) { // Write header diff --git a/openbr/core/opencvutils.h b/openbr/core/opencvutils.h index 572e214..5d8e850 100644 --- a/openbr/core/opencvutils.h +++ b/openbr/core/opencvutils.h @@ -24,6 +24,8 @@ #include #include +#include + namespace OpenCVUtils { // Test/write/display image @@ -91,6 +93,7 @@ namespace OpenCVUtils bool overlaps(const QList &posRects, const cv::Rect &negRect, double overlap); float overlap(const cv::Rect &rect1, const cv::Rect &rect2); float overlap(const QRectF &rect1, const QRectF &rect2); + Eigen::MatrixXf toEigen(cv::Mat m); int getFourcc(); } -- libgit2 0.21.4