Hello community, here is the log from the commit of package libkface for openSUSE:Factory checked in at 2016-03-05 11:21:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libkface (Old) and /work/SRC/openSUSE:Factory/.libkface.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libkface" Changes: -------- --- /work/SRC/openSUSE:Factory/libkface/libkface.changes 2016-02-22 10:19:37.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libkface.new/libkface.changes 2016-03-05 11:21:34.000000000 +0100 @@ -1,0 +2,8 @@ +Thu Mar 3 13:23:36 UTC 2016 - tittiatc...@gmail.com + +- Enable building against openCV 3.x + * opencv-3.1-support.patch Added from KDE Reviewboard +- Drop fix-opencv.diff as this is no longer required with the newer + opencv + +------------------------------------------------------------------- Old: ---- fix-opencv.diff New: ---- opencv-3.1-support.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libkface.spec ++++++ --- /var/tmp/diff_new_pack.6qEPzI/_old 2016-03-05 11:21:35.000000000 +0100 +++ /var/tmp/diff_new_pack.6qEPzI/_new 2016-03-05 11:21:35.000000000 +0100 @@ -26,8 +26,9 @@ Version: 15.12.2 Release: 0 Source0: %{name}-%{version}.tar.xz -Patch0: fix-opencv.diff -BuildRequires: opencv-qt5-devel +#PATCH-FIX-UPSTREAM opencv-3.1-support.patch -- Build with opencv 3.1 +Patch1: opencv-3.1-support.patch +BuildRequires: opencv-qt5-devel > 3.0.0 BuildRequires: extra-cmake-modules BuildRequires: kconfig-devel BuildRequires: kdelibs4support-devel @@ -42,10 +43,10 @@ %prep %setup -q -n %{name}-%{version} -%patch0 -p0 +%patch1 -p1 %build - %cmake_kf5 -d build -- -DENABLE_OPENCV3=false + %cmake_kf5 -d build -- -DENABLE_OPENCV3=TRUE %make_jobs %install ++++++ opencv-3.1-support.patch ++++++ diff --git a/src/recognition-opencv-lbph/facerec_borrowed.h b/src/recognition-opencv-lbph/facerec_borrowed.h index 27ad77a..f197d22 100644 --- a/src/recognition-opencv-lbph/facerec_borrowed.h +++ b/src/recognition-opencv-lbph/facerec_borrowed.h @@ -125,6 +125,8 @@ public: */ void update(cv::InputArrayOfArrays src, cv::InputArray labels); + +#if OPENCV_TEST_VERSION(3,1,0) /** * Predicts the label of a query image in src. */ @@ -134,6 +136,13 @@ public: * Predicts the label and confidence for a given sample. */ void predict(cv::InputArray _src, int &label, double &dist) const; +#else + using cv::face::FaceRecognizer::predict; + /* + * Predict + */ + void predict(cv::InputArray src, cv::Ptr<cv::face::PredictCollector> collector, const int state = 0) const override; +#endif /** * See FaceRecognizer::load(). diff --git a/src/recognition-opencv-lbph/facerec_borrowed.cpp b/src/recognition-opencv-lbph/facerec_borrowed.cpp index 748691e..3c37ce2 100644 --- a/src/recognition-opencv-lbph/facerec_borrowed.cpp +++ b/src/recognition-opencv-lbph/facerec_borrowed.cpp @@ -36,6 +36,8 @@ * * ============================================================ */ +#define QT_NO_EMIT + #include "facerec_borrowed.h" // C++ includes @@ -375,7 +377,11 @@ void LBPHFaceRecognizer::train(InputArrayOfArrays _in_src, InputArray _inm_label } } +#if OPENCV_TEST_VERSION(3,1,0) void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist) const +#else +void LBPHFaceRecognizer::predict(cv::InputArray _src, cv::Ptr<cv::face::PredictCollector> collector, const int state) const +#endif { if(m_histograms.empty()) { @@ -394,8 +400,12 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist m_grid_y, /* grid size y */ true /* normed histograms */ ); +#if OPENCV_TEST_VERSION(3,1,0) minDist = DBL_MAX; minClass = -1; +#else + collector->init((int)m_histograms.size(), state); +#endif // This is the standard method @@ -406,11 +416,19 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist { double dist = compareHist(m_histograms[sampleIdx], query, CV_COMP_CHISQR); +#if OPENCV_TEST_VERSION(3,1,0) if((dist < minDist) && (dist < m_threshold)) { minDist = dist; minClass = m_labels.at<int>((int) sampleIdx); } +#else + int label = m_labels.at<int>((int) sampleIdx); + if (!collector->emit(label, dist, state)) + { + return; + } +#endif } } @@ -422,7 +440,7 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist // Create map "label -> vector of distances to all histograms for this label" std::map<int, std::vector<int> > distancesMap; - for(size_t sampleIdx = 0; sampleIdx < m_histograms.size(); sampleIdx++) + for(size_t sampleIdx = 0; sampleIdx < m_histograms.size(); sampleIdx++) { double dist = compareHist(m_histograms[sampleIdx], query, CV_COMP_CHISQR); std::vector<int>& distances = distancesMap[m_labels.at<int>((int) sampleIdx)]; @@ -445,11 +463,18 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist double mean = sum / it->second.size(); s += QString::fromLatin1("%1: %2 - ").arg(it->first).arg(mean); +#if OPENCV_TEST_VERSION(3,1,0) if((mean < minDist) && (mean < m_threshold)) { minDist = mean; minClass = it->first; } +#else + if (!collector->emit(it->first, mean, state)) + { + return; + } +#endif } qCDebug(LIBKFACE_LOG) << s; @@ -462,7 +487,7 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist // map "label -> number of histograms" std::map<int, int> countMap; - for(size_t sampleIdx = 0; sampleIdx < m_histograms.size(); sampleIdx++) + for(size_t sampleIdx = 0; sampleIdx < m_histograms.size(); sampleIdx++) { int label = m_labels.at<int>((int) sampleIdx); double dist = compareHist(m_histograms[sampleIdx], query, CV_COMP_CHISQR); @@ -480,7 +505,9 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist scoreMap[it->second]++; } +#if OPENCV_TEST_VERSION(3,1,0) minDist = 0; +#endif QString s = QString::fromLatin1("Nearest Neighbor score: "); for (std::map<int,int>::iterator it = scoreMap.begin(); it != scoreMap.end(); ++it) @@ -488,17 +515,26 @@ void LBPHFaceRecognizer::predict(InputArray _src, int &minClass, double &minDist double score = double(it->second) / countMap.at(it->first); s += QString::fromLatin1("%1/%2 %3 ").arg(it->second).arg(countMap.at(it->first)).arg(score); +#if OPENCV_TEST_VERSION(3,1,0) if (score > minDist) { minDist = score; minClass = it->first; } +#else + // large is better thus it is -score. + if (!collector->emit(it->first, -score, state)) + { + return; + } +#endif } qCDebug(LIBKFACE_LOG) << s; } } +#if OPENCV_TEST_VERSION(3,1,0) int LBPHFaceRecognizer::predict(InputArray _src) const { int label; @@ -506,6 +542,7 @@ int LBPHFaceRecognizer::predict(InputArray _src) const predict(_src, label, dummy); return label; } +#endif // Static method ----------------------------------------------------