[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [libkface] test: reenable KFeaceGUI test application.
From:       Gilles Caulier <caulier.gilles () gmail ! com>
Date:       2014-06-12 10:43:11
Message-ID: E1Wv2TP-0001Ea-VI () scm ! kde ! org
[Download RAW message or body]

Git commit 492c5e91fc390cd754a18e9e41ac664d767f03d5 by Gilles Caulier.
Committed on 12/06/2014 at 10:41.
Pushed by cgilles into branch 'master'.

reenable KFeaceGUI test application.
Currently only FaceDetector work
FaceRecognition need to be ported to FaceRecognitionDatabase API

M  +18   -18   test/CMakeLists.txt
M  +6    -6    test/gui/button.cpp
M  +3    -3    test/gui/button.h
M  +60   -49   test/gui/mainwindow.cpp
M  +6    -5    test/gui/mainwindow.h
M  +2    -2    test/gui/mainwindow.ui

http://commits.kde.org/libkface/492c5e91fc390cd754a18e9e41ac664d767f03d5

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7d3b931..8510d69 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -6,7 +6,7 @@
 # @date   2010-06-16
 # @brief  LibKFace library interface for KDE
 #
-# @author Copyright (C) 2010-2012 by Gilles Caulier
+# @author Copyright (C) 2010-2014 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
@@ -43,20 +43,20 @@ TARGET_LINK_LIBRARIES(preprocess kface ${KDE4_KDECORE_LIBS} \
${QT_QTCORE_LIBRARY}  
 # -----------------------------------------------------------------------------
 
-# SET(libfaceGUI_SRCS gui/main.cpp
-#                     gui/mainwindow.cpp
-#                     gui/faceitem.cpp
-#                     gui/button.cpp
-#                     gui/marquee.cpp
-#                     gui/fancyrect.cpp
-#    )
-#
-# KDE4_ADD_UI_FILES(libfaceGUI_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/gui/mainwindow.ui)
-# KDE4_ADD_EXECUTABLE(libfaceGUI ${libfaceGUI_SRCS})
-#
-# TARGET_LINK_LIBRARIES(libfaceGUI kface ${KDE4_KDECORE_LIBS}
-#                                        ${KDE4_KDEUI_LIBS}
-#                                        ${KDE4_KIO_LIBS}
-#                                        ${QT_QTCORE_LIBRARY}
-#                                        ${QT_QTGUI_LIBRARY}
-#                      )
+SET(kfacegui_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/gui/main.cpp
+                  ${CMAKE_CURRENT_SOURCE_DIR}/gui/mainwindow.cpp
+                  ${CMAKE_CURRENT_SOURCE_DIR}/gui/faceitem.cpp
+                  ${CMAKE_CURRENT_SOURCE_DIR}/gui/button.cpp
+                  ${CMAKE_CURRENT_SOURCE_DIR}/gui/marquee.cpp
+                  ${CMAKE_CURRENT_SOURCE_DIR}/gui/fancyrect.cpp
+   )
+
+KDE4_ADD_UI_FILES(kfacegui_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/gui/mainwindow.ui)
+KDE4_ADD_EXECUTABLE(kfacegui ${kfacegui_SRCS})
+
+TARGET_LINK_LIBRARIES(kfacegui kface ${KDE4_KDECORE_LIBS}
+                                     ${KDE4_KDEUI_LIBS}
+                                     ${KDE4_KIO_LIBS}
+                                     ${QT_QTCORE_LIBRARY}
+                                     ${QT_QTGUI_LIBRARY}
+                     )
diff --git a/test/gui/button.cpp b/test/gui/button.cpp
index 57c0bbe..da7b306 100644
--- a/test/gui/button.cpp
+++ b/test/gui/button.cpp
@@ -8,7 +8,7 @@
  * @brief  Pressable Button class using QGraphicsItem
  *
  * @author Copyright (C) 2010 by Frederico Duarte
- * @author Copyright (C) 2010-2012 by Gilles Caulier
+ * @author Copyright (C) 2010-2014 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
@@ -29,11 +29,11 @@
 namespace KFaceIface
 {
 
-class Button::ButtonPriv
+class Button::Private
 {
 public:
 
-    ButtonPriv()
+    Private()
     {
         isPressed = false;
     }
@@ -44,18 +44,18 @@ public:
 };
 
 Button::Button(QGraphicsItem* const parent)
-      : QGraphicsItem(parent), d(new ButtonPriv)
+      : QGraphicsItem(parent), d(new Private)
 {
 }
 
 Button::Button(const QString& normal, const QString& pressed, QGraphicsItem* const \
                parent)
-      : QGraphicsItem(parent), d(new ButtonPriv)
+      : QGraphicsItem(parent), d(new Private)
 {
     setPixmap(normal, pressed);
 }
 
 Button::Button(const QPixmap& normal, const QPixmap& pressed, QGraphicsItem* const \
                parent)
-      : QGraphicsItem(parent), d(new ButtonPriv)
+      : QGraphicsItem(parent), d(new Private)
 {
     setPixmap(normal, pressed);
 }
diff --git a/test/gui/button.h b/test/gui/button.h
index 66dada7..159d471 100644
--- a/test/gui/button.h
+++ b/test/gui/button.h
@@ -8,7 +8,7 @@
  * @brief  Pressable Button class using QGraphicsItem
  *
  * @author Copyright (C) 2010 by Frederico Duarte
- * @author Copyright (C) 2010-2012 by Gilles Caulier
+ * @author Copyright (C) 2010-2014 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
@@ -71,8 +71,8 @@ protected:
 
 private:
 
-    class ButtonPriv;
-    ButtonPriv* const d;
+    class Private;
+    Private* const d;
 };
 
 } // namespace KFaceIface
diff --git a/test/gui/mainwindow.cpp b/test/gui/mainwindow.cpp
index 1b31694..2425225 100644
--- a/test/gui/mainwindow.cpp
+++ b/test/gui/mainwindow.cpp
@@ -11,7 +11,7 @@
  *         <a href="mailto:alexjironkin at gmail dot com">alexjironkin at gmail dot \
                com</a>
  *         Copyright (C) 2010 by Aditya Bhatt
  *         <a href="mailto:adityabhatt1991 at gmail dot com">adityabhatt1991 at \
                gmail dot com</a>
- *         Copyright (C) 2010-2013 by Gilles Caulier
+ *         Copyright (C) 2010-2014 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
@@ -32,7 +32,6 @@
 
 // Qt includes
 
-#include <QDebug>
 #include <QLayout>
 #include <QFormLayout>
 
@@ -85,10 +84,11 @@ MainWindow::MainWindow(QWidget* const parent)
 
     myView->show();
 
-    database = new Database(Database::InitAll, ".");
+    detector = new FaceDetector();
+    database = RecognitionDatabase::addDatabase(QDir::currentPath());
 
     ui->configLocation->setText(QDir::currentPath());
-    ui->horizontalSlider->setValue(database->detectionAccuracy());
+    ui->horizontalSlider->setValue(80);
 
     lastFileOpenPath = QDir::currentPath();
 }
@@ -96,11 +96,13 @@ MainWindow::MainWindow(QWidget* const parent)
 MainWindow::~MainWindow()
 {
     delete ui;
+    delete detector;
 }
 
 void MainWindow::changeEvent(QEvent* e)
 {
     QMainWindow::changeEvent(e);
+
     switch (e->type())
     {
         case QEvent::LanguageChange:
@@ -117,8 +119,7 @@ void MainWindow::openImage()
             lastFileOpenPath,
             "Image Files (*.png *.jpg *.bmp *.pgm)",
             this,
-            "Open Image"
-        );
+            "Open Image");
 
     if (file.isEmpty())
         return;
@@ -133,13 +134,13 @@ void MainWindow::openImage()
     lastPhotoItem        = new QGraphicsPixmapItem(*photo);
     currentPhoto         = photo->toImage();
 
-    if(1.0*ui->widget->width()/photo->width() < \
1.*ui->widget->height()/photo->height()) +    if (1.0 * ui->widget->width() / \
photo->width() < 1.0 * ui->widget->height() / photo->height())  {
-        scale = 1.0*ui->widget->width()/photo->width();
+        scale = 1.0 * ui->widget->width() / photo->width();
     }
     else
     {
-        scale = 1.0*ui->widget->height()/photo->height();
+        scale = 1.0 * ui->widget->height() / photo->height();
     }
 
     lastPhotoItem->setScale(scale);
@@ -147,51 +148,75 @@ void MainWindow::openImage()
     myScene->addItem(lastPhotoItem);
 }
 
-void MainWindow::openConfig()
-{
-    QString directory = KFileDialog::getExistingDirectory(
-            QDir::currentPath(),
-            this,
-            "Select Config Directory"
-        );
-
-    ui->configLocation->setText(directory);
-
-    database = new Database(Database::InitAll, directory);
-}
-
 void MainWindow::detectFaces()
 {
     currentFaces.clear();
-    currentFaces = database->detectFaces(currentPhoto);
-    Face face;
+    currentFaces = detector->detectFaces(currentPhoto);
+
     kDebug() << "libkface detected : " << currentFaces.size() << " faces.";
+    kDebug() << "Coordinates of detected faces : ";
 
-    FaceItem* item=0;
+    foreach(const QRectF& r, currentFaces)
+    {
+        kDebug() << r;
+    }
 
-    foreach(item, faceitems)
+    foreach(FaceItem* const item, faceitems)
         item->setVisible(false);
 
     faceitems.clear();
+    QRect face;
 
     for(int i = 0; i < currentFaces.size(); ++i)
     {
-        face = currentFaces[i];
-        faceitems.append(new FaceItem(0, myScene, face.toRect(), scale));
-        kDebug() << face.toRect()<<endl;
+        face = detector->toAbsoluteRect(currentFaces[i], currentPhoto.size());
+        faceitems.append(new FaceItem(0, myScene, face, scale));
+        kDebug() << face;
+    }
+}
+
+void MainWindow::updateAccuracy()
+{
+    int value = ui->horizontalSlider->value();
+    ui->lcdNumber->display(value);
+    detector->setParameter("accuracy", value/100.0);
+}
+
+void MainWindow::clearScene()
+{
+    QList<QGraphicsItem*> list = myScene->items();
+
+    for(int i=0; i<list.size(); i++)
+    {
+        myScene->removeItem(list.at(i));
     }
 }
 
+void MainWindow::openConfig()
+{
+/*
+    QString directory = KFileDialog::getExistingDirectory(
+            QDir::currentPath(),
+            this,
+            "Select Config Directory");
+
+    ui->configLocation->setText(directory);
+
+    database = new Database(directory);
+*/
+}
+
 void MainWindow::updateConfig()
 {
+/*
     kDebug() << "Path of config directory = " << database->configPath();
 
     // Assign the text of the faceitems to the name of each face. When there is no \
                text, drop that face from currentfaces.
-    QList<Face> updateList;
+    QList<QRectF> updateList;
 
     for(int i = 0 ; i <currentFaces.size(); ++i)
     {
-        if(faceitems[i]->text() != "?")
+        if (faceitems[i]->text() != "?")
         {
             currentFaces[i].setName(faceitems[i]->text());
             updateList.append(currentFaces.at(i));
@@ -207,30 +232,15 @@ void MainWindow::updateConfig()
     {
         kDebug() << "No faces to train.";
     }
-}
-
-void MainWindow::updateAccuracy()
-{
-    int value = ui->horizontalSlider->value();
-    ui->lcdNumber->display(value);
-    database->setDetectionAccuracy(value);
-}
-
-void MainWindow::clearScene()
-{
-    QList<QGraphicsItem*> list = myScene->items();
-
-    for(int i=0; i<list.size(); i++)
-    {
-        myScene->removeItem(list.at(i));
-    }
+*/
 }
 
 void MainWindow::recognise()
 {
+/*
     QList<double> closeness = database->recognizeFaces(currentFaces);
 
-    if(closeness.isEmpty())
+    if (closeness.isEmpty())
         return;
 
     for(int i = 0; i < currentFaces.size(); ++i)
@@ -240,4 +250,5 @@ void MainWindow::recognise()
                  << " and name "<< currentFaces[i].name()
                  << " with a distance of "<< closeness[i];
     }
+*/
 }
diff --git a/test/gui/mainwindow.h b/test/gui/mainwindow.h
index 9164d87..b3ad363 100644
--- a/test/gui/mainwindow.h
+++ b/test/gui/mainwindow.h
@@ -11,7 +11,7 @@
  *         <a href="mailto:alexjironkin at gmail dot com">alexjironkin at gmail dot \
                com</a>
  * @author Copyright (C) 2010 by Aditya Bhatt
  *         <a href="mailto:adityabhatt1991 at gmail dot com">adityabhatt1991 at \
                gmail dot com</a>
- * @author Copyright (C) 2010-2013 by Gilles Caulier
+ * @author Copyright (C) 2010-2014 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
@@ -41,8 +41,8 @@
 
 // libkface includes
 
-#include "database.h"
-#include "face.h"
+#include "recognitiondatabase.h"
+#include "facedetector.h"
 #include "faceitem.h"
 
 namespace Ui
@@ -87,10 +87,11 @@ private:
     QGraphicsPixmapItem* lastPhotoItem;
     QList<FaceItem*>     faceitems;
 
-    Database*            database;
+    RecognitionDatabase  database;
+    FaceDetector*        detector;
     QImage               currentPhoto;
     double               scale;
-    QList<Face>          currentFaces;
+    QList<QRectF>        currentFaces;
     QString              lastFileOpenPath;
 };
 
diff --git a/test/gui/mainwindow.ui b/test/gui/mainwindow.ui
index 7dbf2bd..20e60c4 100644
--- a/test/gui/mainwindow.ui
+++ b/test/gui/mainwindow.ui
@@ -18,10 +18,10 @@
     <item row="0" column="0">
      <widget class="QSlider" name="horizontalSlider">
       <property name="minimum">
-       <number>1</number>
+       <number>0</number>
       </property>
       <property name="maximum">
-       <number>5</number>
+       <number>100</number>
       </property>
       <property name="singleStep">
        <number>1</number>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic