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(); }