From 85e03bedb080127f5909d11fc93429aeed55de72 Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Sun, 17 Mar 2013 22:15:28 -0400 Subject: [PATCH] templatized some functions --- sdk/core/opencvutils.cpp | 28 ---------------------------- sdk/core/opencvutils.h | 32 ++++++++++++++++++++++++++++++-- sdk/plugins/hist.cpp | 2 +- sdk/plugins/output.cpp | 4 ++-- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/sdk/core/opencvutils.cpp b/sdk/core/opencvutils.cpp index 8dc6f4c..c9a6364 100644 --- a/sdk/core/opencvutils.cpp +++ b/sdk/core/opencvutils.cpp @@ -173,22 +173,6 @@ QString OpenCVUtils::elemToString(const Mat &m, int r, int c) return "?"; } -float OpenCVUtils::elemToFloat(const Mat &m, int r, int c) -{ - assert(m.channels() == 1); - switch (m.depth()) { - case CV_8U: return float(m.at(r,c)); - case CV_8S: return float(m.at(r,c)); - case CV_16U: return float(m.at(r,c)); - case CV_16S: return float(m.at(r,c)); - case CV_32S: return float(m.at(r,c)); - case CV_32F: return float(m.at(r,c)); - case CV_64F: return float(m.at(r,c)); - default: qFatal("Unknown matrix depth"); - } - return 0; -} - QString OpenCVUtils::matrixToString(const Mat &m) { QString result; @@ -225,18 +209,6 @@ QStringList OpenCVUtils::matrixToStringList(const Mat &m) return results; } -QList OpenCVUtils::matrixToVector(const Mat &m) -{ - QList results; - vector mv; - split(m, mv); - foreach (const Mat &mc, mv) - for (int i=0; i matrixToVector(const cv::Mat &m); + + template + T getElement(const cv::Mat &m, int r, int c) + { + assert(m.channels() == 1); + switch (m.depth()) { + case CV_8U: return T(m.at(r,c)); + case CV_8S: return T(m.at(r,c)); + case CV_16U: return T(m.at(r,c)); + case CV_16S: return T(m.at(r,c)); + case CV_32S: return T(m.at(r,c)); + case CV_32F: return T(m.at(r,c)); + case CV_64F: return T(m.at(r,c)); + default: qFatal("Unknown matrix depth!"); + } + return 0; + } + + template + QList matrixToVector(const cv::Mat &m) + { + QList results; + std::vector mv; + cv::split(m, mv); + foreach (const cv::Mat &mc, mv) + for (int i=0; i(mc, i, j)); + return results; + } // Conversions cv::Point2f toPoint(const QPointF &qPoint); diff --git a/sdk/plugins/hist.cpp b/sdk/plugins/hist.cpp index 0372e54..996fae7 100644 --- a/sdk/plugins/hist.cpp +++ b/sdk/plugins/hist.cpp @@ -111,7 +111,7 @@ class RankTransform : public UntrainableTransform assert(m.channels() == 1); dst = Mat(m.rows, m.cols, CV_32FC1); typedef QPair Tuple; - QList tuples = Common::Sort(OpenCVUtils::matrixToVector(m)); + QList tuples = Common::Sort(OpenCVUtils::matrixToVector(m)); float prevValue = 0; int prevRank = 0; diff --git a/sdk/plugins/output.cpp b/sdk/plugins/output.cpp index 44c2a0d..ed48ca8 100644 --- a/sdk/plugins/output.cpp +++ b/sdk/plugins/output.cpp @@ -176,7 +176,7 @@ class rrOutput : public MatrixOutput if (!byLine) files.append(queryFiles[i]); typedef QPair Pair; - foreach (const Pair &pair, Common::Sort(OpenCVUtils::matrixToVector(data.row(i)), true, limit)) { + foreach (const Pair &pair, Common::Sort(OpenCVUtils::matrixToVector(data.row(i)), true, limit)) { if (pair.first < threshold) break; File target = targetFiles[pair.second]; target.set("Score", QString::number(pair.first)); @@ -278,7 +278,7 @@ class rankOutput : public MatrixOutput for (int i=0; i Pair; int rank = 1; - foreach (const Pair &pair, Common::Sort(OpenCVUtils::matrixToVector(data.row(i)), true)) { + foreach (const Pair &pair, Common::Sort(OpenCVUtils::matrixToVector(data.row(i)), true)) { if(targetFiles[pair.second].get("Label") == queryFiles[i].get("Label")) { ranks.append(rank); positions.append(pair.second); -- libgit2 0.21.4