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 private implementation 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 #ifndef FACIAL_RECOGNITION_WRAPPER_P_H 0019 #define FACIAL_RECOGNITION_WRAPPER_P_H 0020 0021 #include "facialrecognition_wrapper.h" 0022 0023 // Qt includes 0024 0025 #include <QMutexLocker> 0026 #include <QUuid> 0027 #include <QDir> 0028 #include <QStandardPaths> 0029 #include <QRecursiveMutex> 0030 0031 // Local includes 0032 0033 #include "digikam_config.h" 0034 #include "digikam_debug.h" 0035 #include "opencvdnnfacerecognizer.h" 0036 #include "recognitiontrainingprovider.h" 0037 #include "coredbaccess.h" 0038 #include "dbengineparameters.h" 0039 #include "facedbaccess.h" 0040 #include "facedboperationgroup.h" 0041 #include "facedb.h" 0042 #include "identity.h" 0043 0044 namespace Digikam 0045 { 0046 0047 class Q_DECL_HIDDEN FacialRecognitionWrapper::Private 0048 { 0049 public: 0050 0051 explicit Private(); 0052 ~Private(); 0053 0054 public: 0055 0056 // --- Backend parameters (facesengine_interface_setup.cpp) -------------------------- 0057 0058 void applyParameters(); 0059 0060 public: 0061 0062 // --- Faces Training management (facesengine_interface_training.cpp) ---------------------------------- 0063 0064 void trainIdentityBatch(const QList<Identity>& identitiesToBeTrained, 0065 TrainingDataProvider* const data, 0066 const QString& trainingContext); 0067 0068 void clear(const QList<int>& idsToClear, const QString& trainingContext); 0069 0070 // --- Identity management (facesengine_interface_identity.cpp) ----------------------------------------- 0071 0072 static bool identityContains(const Identity& identity, 0073 const QString& attribute, 0074 const QString& value); 0075 0076 Identity findByAttribute(const QString& attribute, 0077 const QString& value) const; 0078 0079 Identity findByAttributes(const QString& attribute, 0080 const QMultiMap<QString, QString>& valueMap) const; 0081 0082 public: 0083 0084 bool dbAvailable; 0085 int ref; 0086 mutable QRecursiveMutex mutex; 0087 QVariantMap parameters; 0088 QHash<int, Identity> identityCache; 0089 OpenCVDNNFaceRecognizer* recognizer; 0090 }; 0091 0092 } // namespace Digikam 0093 0094 #endif // FACIAL_RECOGNITION_WRAPPER_P_H