[arch-commits] Commit in libkface4/trunk (3 files)
Antonio Rojas
arojas at archlinux.org
Wed Mar 9 08:48:43 UTC 2016
Date: Wednesday, March 9, 2016 @ 09:48:43
Author: arojas
Revision: 261240
opencv 3.1 rebuild
Added:
libkface4/trunk/libkface4-opencv3.1.patch
libkface4/trunk/libkface4-opencv3.patch
Modified:
libkface4/trunk/PKGBUILD
---------------------------+
PKGBUILD | 18 +
libkface4-opencv3.1.patch | 167 +++++++++++++++
libkface4-opencv3.patch | 482 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 663 insertions(+), 4 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2016-03-09 07:54:08 UTC (rev 261239)
+++ PKGBUILD 2016-03-09 08:48:43 UTC (rev 261240)
@@ -6,7 +6,7 @@
pkgname=libkface4
_pkgname=libkface
pkgver=15.08.3
-pkgrel=2
+pkgrel=3
pkgdesc="A Qt/C++ wrapper around LibFace library to perform face recognition and detection over pictures"
url="https://projects.kde.org/projects/kde/kdegraphics/libs/libkface"
arch=(i686 x86_64)
@@ -16,11 +16,20 @@
replaces=('libkface<15.11')
conflicts=('libkface<15.11')
install=$pkgname.install
-source=("http://download.kde.org/stable/applications/$pkgver/src/$_pkgname-$pkgver.tar.xz")
-sha1sums=('cc65ff362ffad872917aac0a184c6903a90b3cbe')
+source=("http://download.kde.org/stable/applications/$pkgver/src/$_pkgname-$pkgver.tar.xz"
+ libkface4-opencv3.patch libkface4-opencv3.1.patch)
+sha1sums=('cc65ff362ffad872917aac0a184c6903a90b3cbe'
+ '5bfab370d1bb90bcf14bc75ed31f8d53971eb7fb'
+ '244bb5ec8b2f4784b98532ec2db75aad362bef29')
prepare() {
mkdir -p build
+
+ cd $_pkgname-$pkgver
+# Support opencv 3
+ patch -p1 -i ../libkface4-opencv3.patch
+# Fix build with opencv 3.1
+ patch -p1 -i ../libkface4-opencv3.1.patch
}
build() {
@@ -28,7 +37,8 @@
cmake ../$_pkgname-$pkgver \
-DCMAKE_BUILD_TYPE=Release \
-DKDE4_BUILD_TESTS=OFF \
- -DCMAKE_INSTALL_PREFIX=/usr
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_OPENCV3=ON
make
}
Added: libkface4-opencv3.1.patch
===================================================================
--- libkface4-opencv3.1.patch (rev 0)
+++ libkface4-opencv3.1.patch 2016-03-09 08:48:43 UTC (rev 261240)
@@ -0,0 +1,167 @@
+diff --git a/src/recognition-opencv-lbph/facerec_borrowed.h b/src/recognition-opencv-lbph/facerec_borrowed.h
+index 27ad77a..f197d22 100644
+--- a/libkface/recognition-opencv-lbph/facerec_borrowed.h
++++ b/libkface/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/libkface/recognition-opencv-lbph/facerec_borrowed.cpp
++++ b/libkface/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("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
+ }
+
+ kDebug() << 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 ----------------------------------------------------
+
Added: libkface4-opencv3.patch
===================================================================
--- libkface4-opencv3.patch (rev 0)
+++ libkface4-opencv3.patch 2016-03-09 08:48:43 UTC (rev 261240)
@@ -0,0 +1,482 @@
+From: Gilles Caulier <caulier.gilles at gmail.com>
+Date: Sun, 06 Sep 2015 08:13:52 +0000
+Subject: use same OpenCV logic than digiKam and kipi-plugins
+X-Git-Url: http://quickgit.kde.org/?p=libkface.git&a=commitdiff&h=dc62c0e0ea55d189d918501cce4d92f4198a1a0c
+---
+use same OpenCV logic than digiKam and kipi-plugins
+CCBUGS: 349601
+---
+
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,13 +1,16 @@
+ #
+-# Copyright (c) 2010-2014, Gilles Caulier, <caulier dot gilles at gmail dot com>
++# Copyright (c) 2010-2015, Gilles Caulier, <caulier dot gilles at gmail dot com>
+ #
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
++cmake_minimum_required(VERSION 2.8.9)
+ project(libkface)
+
+ message(STATUS "----------------------------------------------------------------------------------")
+ message(STATUS "Starting CMake configuration for: libkface")
++
++option(ENABLE_OPENCV3 "Build libkface with OpenCV3 instead OpenCV2 (default=OFF)" OFF)
+
+ find_package(Qt4 4.6.0 REQUIRED)
+ find_package(KDE4 REQUIRED)
+@@ -29,7 +32,26 @@
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
+
+ include(MacroOpenCV)
+-DETECT_OPENCV(2.4.9 core highgui objdetect contrib legacy imgproc)
++
++if(ENABLE_OPENCV3)
++
++ DETECT_OPENCV(3.0.0 core face highgui objdetect imgproc)
++
++ if(${OpenCV_FOUND} AND ${OpenCV_VERSION} VERSION_LESS 3.0.0)
++ message(STATUS "ENABLE_OPENCV3 option is enabled and OpenCV < 3.0.0 have been found. Disabled ENABLE_OPENCV3")
++ set(OpenCV_FOUND FALSE)
++ endif()
++
++else()
++
++ DETECT_OPENCV(2.4.9 core highgui objdetect contrib legacy imgproc)
++
++ if(${OpenCV_FOUND} AND ${OpenCV_VERSION} VERSION_GREATER 2.4.99)
++ message(STATUS "ENABLE_OPENCV3 option is disabled and OpenCV >= 3.0.0 have been found. Enabled ENABLE_OPENCV3")
++ set(OpenCV_FOUND FALSE)
++ endif()
++
++endif()
+
+ include_directories(${OpenCV_INCLUDE_DIRS})
+
+@@ -48,11 +70,12 @@
+ # 3.3.0 => 2.0.0 (Added a "simple" training method using image data directly for a single image)
+ # 3.4.0 => 2.0.0 (Added a "simple" training method using image data directly for an image list)
+ # 3.5.0 => 3.0.0 (Added d private internal container to reduce binary uncompatibility with Identity class)
++ # 3.5.1 => 3.0.0 (Added OpenCV3 support)
+
+ # Library API version
+ set(KFACE_LIB_MAJOR_VERSION "3")
+ set(KFACE_LIB_MINOR_VERSION "5")
+- set(KFACE_LIB_PATCH_VERSION "0")
++ set(KFACE_LIB_PATCH_VERSION "1")
+
+ # Suffix to add at end of version string. Usual values are:
+ # "-git" : alpha code unstable from git. Do not use in production
+
+--- a/README
++++ b/README
+@@ -20,6 +20,11 @@
+ libqt >= 4.6.x http://www.qtsoftware.com
+ libkde >= 4.4.x http://www.kde.org
+ libopencv >= 2.4.9 http://opencv.willowgarage.com/wiki (with opencv 'haarcascades' data files)
++
++CMake compilation options to custom libkface:
++
++Use CMake "-DENABLE_OPENCV3=on" flag to compile libkface source code using OpenCV3 instead OpenCV2 (disabled by default).
++ OpenCV3 support needs extra contrib modules package, especially 'face' and 'legacy' components.
+
+ -- INSTALL ------------------------------------------------------------
+
+
+--- a/libkface/CMakeLists.txt
++++ b/libkface/CMakeLists.txt
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2010-2014, Gilles Caulier, <caulier dot gilles at gmail dot com>
++# Copyright (c) 2010-2015, Gilles Caulier, <caulier dot gilles at gmail dot com>
+ #
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+--- a/libkface/alignment-congealing/funnelreal.cpp
++++ b/libkface/alignment-congealing/funnelreal.cpp
+@@ -426,7 +426,7 @@
+
+ for(int k=0; k<numParams; k++)
+ {
+- float dn = ((rand()%160)-80)/100.0f;
++ float dn = ((qrand()%160)-80)/100.0f;
+ if(k>1)
+ {
+ dn /= 100.0f;
+
+--- a/libkface/detection/opencvfacedetector.cpp
++++ b/libkface/detection/opencvfacedetector.cpp
+@@ -18,7 +18,7 @@
+ * <a href="alexjironkin at gmail dot com">alexjironkin at gmail dot com</a>
+ * @author Copyright (C) 2010 by Aditya Bhatt
+ * <a href="adityabhatt at gmail dot com">adityabhatt at gmail dot com</a>
+- * @author Copyright (C) 2010-2014 by Gilles Caulier
++ * @author Copyright (C) 2010-2015 by Gilles Caulier
+ * <a href="mailto:caulier dot gilles at gmail dot com">caulier dot gilles at gmail dot com</a>
+ * @author Copyright (C) 2010-2013 by Marcel Wiesweg
+ * <a href="mailto:marcel dot wiesweg at gmx dot de">marcel dot wiesweg at gmx dot de</a>
+@@ -136,13 +136,14 @@
+
+ cv::Size getOriginalWindowSize() const
+ {
++#if OPENCV_VERSION <= OPENCV_MAKE_VERSION(2,4,99)
+ // This is a HACK which may break any time. Work around the fact that getOriginalWindowSize()
+ // always returns (0,0) and we need these values.
+ if (oldCascade)
+ {
+ return oldCascade->orig_window_size;
+ }
+-
++#endif
+ return cv::Size(0, 0);
+ }
+
+
+--- a/libkface/libopencv.h.cmake.in
++++ b/libkface/libopencv.h.cmake.in
+@@ -7,7 +7,7 @@
+ * @date 2010-06-16
+ * @brief Wrapper for OpenCV header files
+ *
+- * @author Copyright (C) 2012-2014 by Gilles Caulier
++ * @author Copyright (C) 2012-2015 by Gilles Caulier
+ * <a href="mailto:caulier dot gilles at gmail dot com">caulier dot gilles at gmail dot com</a>
+ *
+ * This program is free software; you can redistribute it
+@@ -31,16 +31,16 @@
+
+ // Pragma directives to reduce warnings from OpenCV header files.
+ #if not defined(__APPLE__) && defined(__GNUC__)
+-#pragma GCC diagnostic push
+-#pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
+-#pragma GCC diagnostic ignored "-Woverloaded-virtual"
++# pragma GCC diagnostic push
++# pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
++# pragma GCC diagnostic ignored "-Woverloaded-virtual"
+ #endif
+
+ #if defined(__APPLE__) && defined(__clang__)
+-#pragma clang diagnostic push
+-#pragma clang diagnostic ignored "-Wnon-virtual-dtor"
+-#pragma clang diagnostic ignored "-Woverloaded-virtual"
+-#pragma clang diagnostic ignored "-Wcast-align"
++# pragma clang diagnostic push
++# pragma clang diagnostic ignored "-Wnon-virtual-dtor"
++# pragma clang diagnostic ignored "-Woverloaded-virtual"
++# pragma clang diagnostic ignored "-Wcast-align"
+ #endif
+
+ // OpenCV includes
+@@ -49,25 +49,32 @@
+
+ #define OPENCV_MAKE_VERSION(major,minor,patch) (((major) << 16) | ((minor) << 8) | (patch))
+ #define OPENCV_VERSION OPENCV_MAKE_VERSION(CV_MAJOR_VERSION,CV_MINOR_VERSION,CV_SUBMINOR_VERSION)
+-#define OPENCV_TEST_VERSION(major,minor,patch) ( OPENCV_VERSION >= OPENCV_MAKE_VERSION(major,minor,patch) )
++#define OPENCV_TEST_VERSION(major,minor,patch) ( OPENCV_VERSION < OPENCV_MAKE_VERSION(major,minor,patch) )
+
+-#include <opencv2/core/core.hpp>
+-#include <opencv2/core/internal.hpp>
+-#include <opencv2/contrib/contrib.hpp>
++#if OPENCV_TEST_VERSION(3,0,0)
++# include <opencv2/core/core.hpp>
++# include <opencv2/core/internal.hpp>
++# include <opencv2/contrib/contrib.hpp>
++#else
++# include <opencv2/face.hpp>
++# include <opencv2/core.hpp>
++#endif
+
+ // for old-style code
++#if OPENCV_VERSION <= OPENCV_MAKE_VERSION(2,4,99)
++# include <opencv2/legacy/compat.hpp>
++#endif
+ #include <opencv2/opencv.hpp>
+-#include <opencv2/legacy/compat.hpp>
+ #include <opencv2/highgui/highgui_c.h>
+ #include <opencv/cvaux.h>
+
+ // Restore warnings
+ #if not defined(__APPLE__) && defined(__GNUC__)
+-#pragma GCC diagnostic pop
++# pragma GCC diagnostic pop
+ #endif
+
+ #if defined(__APPLE__) && defined(__clang__)
+-#pragma clang diagnostic pop
++# pragma clang diagnostic pop
+ #endif
+
+ #endif // LIB_OPEN_CV_H
+
+--- a/libkface/recognition-opencv-lbph/facerec_borrowed.cpp
++++ b/libkface/recognition-opencv-lbph/facerec_borrowed.cpp
+@@ -531,15 +531,17 @@
+ return ptr;
+ }
+
+-CV_INIT_ALGORITHM(LBPHFaceRecognizer, "FaceRecognizer.LBPH-KFaceIface",
+- obj.info()->addParam(obj, "radius", obj.m_radius);
+- obj.info()->addParam(obj, "neighbors", obj.m_neighbors);
+- obj.info()->addParam(obj, "grid_x", obj.m_grid_x);
+- obj.info()->addParam(obj, "grid_y", obj.m_grid_y);
+- obj.info()->addParam(obj, "threshold", obj.m_threshold);
+- obj.info()->addParam(obj, "histograms", obj.m_histograms); // modification: Make Read/Write
+- obj.info()->addParam(obj, "labels", obj.m_labels); // modification: Make Read/Write
+- obj.info()->addParam(obj, "statistic", obj.m_statisticsMode)); // modification: Add parameter
++#if OPENCV_VERSION <= OPENCV_MAKE_VERSION(2,4,99)
++ CV_INIT_ALGORITHM(LBPHFaceRecognizer, "FaceRecognizer.LBPH-KFaceIface",
++ obj.info()->addParam(obj, "radius", obj.m_radius);
++ obj.info()->addParam(obj, "neighbors", obj.m_neighbors);
++ obj.info()->addParam(obj, "grid_x", obj.m_grid_x);
++ obj.info()->addParam(obj, "grid_y", obj.m_grid_y);
++ obj.info()->addParam(obj, "threshold", obj.m_threshold);
++ obj.info()->addParam(obj, "histograms", obj.m_histograms); // modification: Make Read/Write
++ obj.info()->addParam(obj, "labels", obj.m_labels); // modification: Make Read/Write
++ obj.info()->addParam(obj, "statistic", obj.m_statisticsMode)); // modification: Add parameter
++#endif
+
+ } // namespace KFaceIface
+
+
+--- a/libkface/recognition-opencv-lbph/facerec_borrowed.h
++++ b/libkface/recognition-opencv-lbph/facerec_borrowed.h
+@@ -45,7 +45,11 @@
+ namespace KFaceIface
+ {
+
++#if OPENCV_TEST_VERSION(3,0,0)
+ class LBPHFaceRecognizer : public cv::FaceRecognizer
++#else
++class LBPHFaceRecognizer : public cv::face::FaceRecognizer
++#endif
+ {
+ public:
+
+@@ -99,8 +103,13 @@
+
+ ~LBPHFaceRecognizer() {}
+
++#if OPENCV_TEST_VERSION(3,0,0)
+ using cv::FaceRecognizer::save;
+ using cv::FaceRecognizer::load;
++#else
++ using cv::face::FaceRecognizer::save;
++ using cv::face::FaceRecognizer::load;
++#endif
+
+ static cv::Ptr<LBPHFaceRecognizer> create(int radius=1, int neighbors=8, int grid_x=8, int grid_y=8, double threshold = DBL_MAX, PredictionStatistics statistics = NearestNeighbor);
+
+@@ -139,6 +148,8 @@
+ /**
+ * Getter functions.
+ */
++#if OPENCV_TEST_VERSION(3,0,0)
++
+ int neighbors() const { return m_neighbors; }
+ int radius() const { return m_radius; }
+ int grid_x() const { return m_grid_x; }
+@@ -146,6 +157,34 @@
+
+ // NOTE: Implementation done through CV_INIT_ALGORITHM macro from OpenCV.
+ cv::AlgorithmInfo* info() const;
++
++#else
++
++ int getNeighbors() const { return m_neighbors; }
++ void setNeighbors(int _neighbors) { m_neighbors = _neighbors; }
++
++ int getRadius() const { return m_radius; }
++ void setRadius(int radius) { m_radius = radius; }
++
++ int getGrid_x() const { return m_grid_x; }
++ void setGrid_x(int _grid_x) { m_grid_x = _grid_x; }
++
++ int getGrid_y() const { return m_grid_y; }
++ void setGrid_y(int _grid_y) { m_grid_y = _grid_y; }
++
++ double getThreshold() const { return m_threshold; }
++ void setThreshold(double _threshold) { m_threshold = _threshold; }
++
++ void setHistograms(std::vector<cv::Mat> _histograms) { m_histograms = _histograms; }
++ std::vector<cv::Mat> getHistograms() const { return m_histograms; }
++
++ void setLabels(cv::Mat _labels) { m_labels = _labels; }
++ cv::Mat getLabels() const { return m_labels; }
++
++ void setStatistic(int _statistic) { m_statisticsMode = _statistic; }
++ int getStatistic() const { return m_statisticsMode; }
++
++#endif
+
+ private:
+
+
+--- a/libkface/recognition-opencv-lbph/lbphfacemodel.cpp
++++ b/libkface/recognition-opencv-lbph/lbphfacemodel.cpp
+@@ -61,7 +61,11 @@
+ : cv::Ptr<LBPHFaceRecognizer>(LBPHFaceRecognizer::create()),
+ databaseId(0)
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("threshold", 100.0);
++#else
++ ptr()->setThreshold(100.0);
++#endif
+ }
+
+ LBPHFaceModel::~LBPHFaceModel()
+@@ -80,9 +84,13 @@
+
+ const LBPHFaceRecognizer* LBPHFaceModel::ptr() const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ const LBPHFaceRecognizer* const ptr = cv::Ptr<LBPHFaceRecognizer>::operator const KFaceIface::LBPHFaceRecognizer*();
+-
+- if (!ptr)
++#else
++ const LBPHFaceRecognizer* const ptr = cv::Ptr<LBPHFaceRecognizer>::operator KFaceIface::LBPHFaceRecognizer*();
++#endif
++
++ if (!ptr)
+ kWarning() << "LBPHFaceRecognizer pointer is null";
+
+ return ptr;
+@@ -90,47 +98,83 @@
+
+ int LBPHFaceModel::radius() const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ return ptr()->get<int>("radius");
++#else
++ return ptr()->getRadius();
++#endif
+ }
+
+ void LBPHFaceModel::setRadius(int radius)
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("radius", radius);
++#else
++ ptr()->setRadius(radius);
++#endif
+ }
+
+ int LBPHFaceModel::neighbors() const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ return ptr()->get<int>("neighbors");
++#else
++ return ptr()->getNeighbors();
++#endif
+ }
+
+ void LBPHFaceModel::setNeighbors(int neighbors)
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("neighbors", neighbors);
++#else
++ ptr()->setNeighbors(neighbors);
++#endif
+ }
+
+ int LBPHFaceModel::gridX() const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ return ptr()->get<int>("grid_x");
++#else
++ return ptr()->getGrid_x();
++#endif
+ }
+
+ void LBPHFaceModel::setGridX(int grid_x)
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("grid_x", grid_x);
++#else
++ ptr()->setGrid_x(grid_x);
++#endif
+ }
+
+ int LBPHFaceModel::gridY() const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ return ptr()->get<int>("grid_y");
++#else
++ return ptr()->getGrid_y();
++#endif
+ }
+
+ void LBPHFaceModel::setGridY(int grid_y)
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("grid_y", grid_y);
++#else
++ ptr()->setGrid_y(grid_y);
++#endif
+ }
+
+ OpenCVMatData LBPHFaceModel::histogramData(int index) const
+ {
++#if OPENCV_TEST_VERSION(3,0,0)
+ return OpenCVMatData(ptr()->get<std::vector<cv::Mat> >("histograms").at(index));
++#else
++ return OpenCVMatData(ptr()->getHistograms().at(index));
++#endif
+ }
+
+ QList<LBPHistogramMetadata> LBPHFaceModel::histogramMetadata() const
+@@ -168,12 +212,24 @@
+ m_histogramMetadata << metadata;
+ }
+
++#if OPENCV_TEST_VERSION(3,0,0)
+ std::vector<cv::Mat> currentHistograms = ptr()->get<std::vector<cv::Mat> >("histograms");
+ cv::Mat currentLabels = ptr()->get<cv::Mat>("labels");
++#else
++ std::vector<cv::Mat> currentHistograms = ptr()->getHistograms();
++ cv::Mat currentLabels = ptr()->getLabels();
++#endif
++
+ currentHistograms.insert(currentHistograms.end(), newHistograms.begin(), newHistograms.end());
+ currentLabels.push_back(newLabels);
++
++#if OPENCV_TEST_VERSION(3,0,0)
+ ptr()->set("histograms", currentHistograms);
+- ptr()->set("labels", currentLabels);
++ ptr()->set("labels", currentLabels);
++#else
++ ptr()->setHistograms(currentHistograms);
++ ptr()->setLabels(currentLabels);
++#endif
+
+ /*
+ //Most cumbersome and inefficient way through a file storage which we were forced to use if we used standard OpenCV
+@@ -215,7 +271,11 @@
+
+ // Update local information
+ // We assume new labels are simply appended
++#if OPENCV_TEST_VERSION(3,0,0)
+ cv::Mat currentLabels = ptr()->get<cv::Mat>("labels");
++#else
++ cv::Mat currentLabels = ptr()->getLabels();
++#endif
+
+ for (int i = m_histogramMetadata.size() ; i < currentLabels.rows ; i++)
+ {
+
+--- a/tests/preprocess.cpp
++++ b/tests/preprocess.cpp
+@@ -93,7 +93,7 @@
+ // Draw images side-by-side for later display
+ QSize size(left.cols, left.rows);
+ size.scale(uiSize, uiSize, Qt::KeepAspectRatio);
+- cv::Size scaleSize(size.height(), size.width());
++ cv::Size scaleSize(size.width(), size.height());
+
+ const int top = currentRow*uiSize;
+ cv::Mat scaledLeft, scaledRight;
+
More information about the arch-commits
mailing list