From 9b42f0bfda5643a0a46cd9ced0213843591f096e Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Mon, 11 Mar 2013 15:09:52 -0400 Subject: [PATCH] rewrote YouTubeFacesDBTransform --- sdk/core/bee.cpp | 1 + sdk/plugins/youtube.cpp | 38 +++++++++++++------------------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/sdk/core/bee.cpp b/sdk/core/bee.cpp index 1bbca0d..982cdde 100644 --- a/sdk/core/bee.cpp +++ b/sdk/core/bee.cpp @@ -199,6 +199,7 @@ void writeMatrix(const Mat &m, const QString &matrix, const QString &targetSigse char buff[4]; QFile file(matrix); + QtUtils::touchDir(file); bool success = file.open(QFile::WriteOnly); if (!success) qFatal("Unable to open %s for writing.", qPrintable(matrix)); file.write("S2\n"); file.write(qPrintable(QFileInfo(targetSigset).fileName())); diff --git a/sdk/plugins/youtube.cpp b/sdk/plugins/youtube.cpp index 1a96ddc..8954fe6 100644 --- a/sdk/plugins/youtube.cpp +++ b/sdk/plugins/youtube.cpp @@ -1,3 +1,4 @@ +#include #include #include "core/common.h" @@ -16,16 +17,6 @@ class YouTubeFacesDBTransform : public UntrainableMetaTransform Q_PROPERTY(QString algorithm READ get_algorithm WRITE set_algorithm RESET reset_algorithm STORED false) BR_PROPERTY(QString, algorithm, "") - QSharedPointer transform; - QSharedPointer distance; - - void init() - { - if (algorithm.isEmpty()) return; - transform = Transform::fromAlgorithm(algorithm); - distance = Distance::fromAlgorithm(algorithm); - } - void project(const TemplateList &src, TemplateList &dst) const { Transform::project(src.mid(1) /* First template is the header in 'splits.txt' */, dst); @@ -33,22 +24,19 @@ class YouTubeFacesDBTransform : public UntrainableMetaTransform void project(const Template &src, Template &dst) const { + static QMutex mutex; const QStringList words = src.file.name.split(", "); - dst.file.name = words[0] + "_" + words[1] + "_" + words[4] + ".mtx"; - - TemplateList queryTemplates = TemplateList::fromGallery(File(words[2]).resolved()); - sort(queryTemplates); - queryTemplates >> *transform; - - TemplateList targetTemplates = TemplateList::fromGallery(File(words[3]).resolved()); - sort(targetTemplates); - targetTemplates >> *transform; - - QScopedPointer memoryOutput(MatrixOutput::make(targetTemplates.files(), queryTemplates.files())); - distance->compare(targetTemplates, queryTemplates, memoryOutput.data()); - - dst.clear(); - dst.m() = memoryOutput.data()->data; + const QString matrix = "YTF-"+algorithm+"/"+words[0] + "_" + words[1] + "_" + words[4] + ".mtx"; + const QStringList arguments = QStringList() << "-algorithm" << algorithm + << "-parallelism" << QString::number(Globals->parallelism) + << "-path" << Globals->path + << "-compare" << File(words[2]).resolved() << File(words[3]).resolved() << matrix; + mutex.lock(); + int result = QProcess::execute(QCoreApplication::applicationFilePath(), arguments); + mutex.unlock(); + if (result != 0) + qWarning("Process for computing %s returned %d.", qPrintable(matrix), result); + dst = Template(); } static void sort(TemplateList &templates) -- libgit2 0.21.4