File indexing completed on 2025-03-09 03:55:01
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam 0004 * 0005 * Date : 2010-06-16 0006 * Description : The parameters of recognition wrapper 0007 * 0008 * SPDX-FileCopyrightText: 2010 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de> 0009 * SPDX-FileCopyrightText: 2010 by Aditya Bhatt <adityabhatt1991 at gmail dot com> 0010 * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * SPDX-FileCopyrightText: 2019 by Thanh Trung Dinh <dinhthanhtrung1996 at gmail dot com> 0012 * SPDX-FileCopyrightText: 2020 by Nghia Duong <minhnghiaduong997 at gmail dot com> 0013 * 0014 * SPDX-License-Identifier: GPL-2.0-or-later 0015 * 0016 * ============================================================ */ 0017 0018 #include "facialrecognition_wrapper_p.h" 0019 0020 namespace Digikam 0021 { 0022 0023 void FacialRecognitionWrapper::Private::applyParameters() 0024 { 0025 int k = 5; 0026 float threshold = 0.6F; 0027 0028 if (parameters.contains(QLatin1String("k-nearest"))) 0029 { 0030 k = parameters.value(QLatin1String("k-nearest")).toInt(); 0031 } 0032 else if (parameters.contains(QLatin1String("threshold"))) 0033 { 0034 threshold = parameters.value(QLatin1String("threshold")).toFloat(); 0035 } 0036 else if (parameters.contains(QLatin1String("accuracy"))) 0037 { 0038 threshold = parameters.value(QLatin1String("accuracy")).toFloat(); 0039 } 0040 0041 threshold = 1 - threshold; 0042 0043 qCDebug(DIGIKAM_FACESENGINE_LOG) << "recognition threshold" << threshold; 0044 0045 recognizer->setNbNeighBors(k); 0046 recognizer->setThreshold(threshold); 0047 } 0048 0049 void FacialRecognitionWrapper::setParameter(const QString& parameter, const QVariant& value) 0050 { 0051 if (!d || !d->dbAvailable) 0052 { 0053 return; 0054 } 0055 0056 QMutexLocker lock(&d->mutex); 0057 0058 d->parameters.insert(parameter, value); 0059 d->applyParameters(); 0060 } 0061 0062 void FacialRecognitionWrapper::setParameters(const QVariantMap& parameters) 0063 { 0064 if (!d || !d->dbAvailable) 0065 { 0066 return; 0067 } 0068 0069 QMutexLocker lock(&d->mutex); 0070 0071 for (QVariantMap::const_iterator it = parameters.begin() ; 0072 it != parameters.end() ; 0073 ++it) 0074 { 0075 d->parameters.insert(it.key(), it.value()); 0076 } 0077 0078 d->applyParameters(); 0079 } 0080 0081 QVariantMap FacialRecognitionWrapper::parameters() const 0082 { 0083 if (!d || !d->dbAvailable) 0084 { 0085 return QVariantMap(); 0086 } 0087 0088 QMutexLocker lock(&d->mutex); 0089 0090 return d->parameters; 0091 } 0092 0093 } // namespace Digikam