[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