digiKam
Loading...
Searching...
No Matches
facepipelinepackage.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2010-09-03
7 * Description : Integrated, multithread face detection / recognition
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QFlags>
21#include <QThread>
22
23// Local includes
24
25#include "identity.h"
26#include "digikam_debug.h"
27#include "facetagsiface.h"
28#include "dimg.h"
29#include "loadingdescription.h"
30#include "iteminfo.h"
31/*
32#include "recognitiondatabase.h"
33*/
34
35namespace Digikam
36{
37
38class DetectionBenchmarker;
39class RecognitionBenchmarker;
40class DetectionWorker;
41class RecognitionWorker;
42class TrainerWorker;
43class DatabaseWriter;
44class FacePreviewLoader;
45class FaceItemRetriever;
46class ParallelPipes;
47class ScanStateFilter;
48
50{
51public:
52
53 enum Role
54 {
55 NoRole = 0,
56
61
63 ForRecognition = 1 << 10,
64 ForConfirmation = 1 << 11,
65 ForTraining = 1 << 12,
66 ForEditing = 1 << 13,
67
69 Confirmed = 1 << 20,
70 Trained = 1 << 21,
71 Edited = 1 << 22
72 };
73 Q_DECLARE_FLAGS(Roles, Role)
74
75public:
76
78 explicit FacePipelineFaceTagsIface(const FaceTagsIface& face);
80
82
83public:
84
85 Roles roles = NoRole;
88};
89
90// ------------------------------------------------------------------------------------
91
92class FacePipelineFaceTagsIfaceList : public QList<FacePipelineFaceTagsIface>
93{
94public:
95
97 explicit FacePipelineFaceTagsIfaceList(const QList<FaceTagsIface>& faces);
99
100 FacePipelineFaceTagsIfaceList& operator=(const QList<FaceTagsIface>& faces);
101
102public:
103
104 void setRole(FacePipelineFaceTagsIface::Roles role);
105 void clearRole(FacePipelineFaceTagsIface::Roles role);
106 void replaceRole(FacePipelineFaceTagsIface::Roles remove,
107 FacePipelineFaceTagsIface::Roles add);
108
109 QList<FaceTagsIface> toFaceTagsIfaceList() const;
110
111 FacePipelineFaceTagsIfaceList facesForRole(FacePipelineFaceTagsIface::Roles role) const;
112};
113
114// ------------------------------------------------------------------------------------
115
117{
118public:
119
129 Q_DECLARE_FLAGS(ProcessFlags, ProcessFlag)
130
131public:
132
135
136public:
137
140 QList<QRectF> detectedFaces;
141 QList<Identity> recognitionResults;
144
146};
147
148// ------------------------------------------------------------------------------------
149
151 public QSharedData
152{
153public:
154
157
158 bool operator==(const LoadingDescription& description) const;
159
160public:
161
162 QString filePath;
163 typedef QExplicitlySharedDataPointer<FacePipelineExtendedPackage> Ptr;
164};
165
166// ----------------------------------------------------------------------------------------
167
168class Q_DECL_HIDDEN PackageLoadingDescriptionList : public QList<FacePipelineExtendedPackage::Ptr>
169{
170public:
171
174
176};
177
178} // namespace Digikam
179
180Q_DECLARE_METATYPE(Digikam::FacePipelinePackage)
181Q_DECLARE_OPERATORS_FOR_FLAGS(Digikam::FacePipelineFaceTagsIface::Roles)
182Q_DECLARE_OPERATORS_FOR_FLAGS(Digikam::FacePipelinePackage::ProcessFlags)
Definition dimg.h:52
Definition facepipelinepackage.h:152
QExplicitlySharedDataPointer< FacePipelineExtendedPackage > Ptr
Definition facepipelinepackage.h:163
QString filePath
Definition facepipelinepackage.h:162
Definition facepipelinepackage.h:93
void clearRole(FacePipelineFaceTagsIface::Roles role)
Definition facepipelinepackage.cpp:85
void setRole(FacePipelineFaceTagsIface::Roles role)
Definition facepipelinepackage.cpp:77
FacePipelineFaceTagsIfaceList & operator=(const QList< FaceTagsIface > &faces)
Definition facepipelinepackage.cpp:67
void replaceRole(FacePipelineFaceTagsIface::Roles remove, FacePipelineFaceTagsIface::Roles add)
Definition facepipelinepackage.cpp:93
FacePipelineFaceTagsIfaceList facesForRole(FacePipelineFaceTagsIface::Roles role) const
Definition facepipelinepackage.cpp:118
QList< FaceTagsIface > toFaceTagsIfaceList() const
Definition facepipelinepackage.cpp:106
Definition facepipelinepackage.h:50
TagRegion assignedRegion
Definition facepipelinepackage.h:87
int assignedTagId
Definition facepipelinepackage.h:86
FacePipelineFaceTagsIface & operator=(const FacePipelineFaceTagsIface &other)
Definition facepipelinepackage.cpp:39
Roles roles
Definition facepipelinepackage.h:85
Role
Definition facepipelinepackage.h:54
@ GivenAsArgument
Source.
Definition facepipelinepackage.h:58
@ DetectedFromImage
Definition facepipelinepackage.h:60
@ Trained
Definition facepipelinepackage.h:70
@ ForEditing
Definition facepipelinepackage.h:66
@ ReadFromDatabase
Definition facepipelinepackage.h:59
@ ForTraining
Definition facepipelinepackage.h:65
@ Edited
Definition facepipelinepackage.h:71
@ ForConfirmation
Definition facepipelinepackage.h:64
@ NoRole
Definition facepipelinepackage.h:55
@ Confirmed
Executed action (task is cleared).
Definition facepipelinepackage.h:69
@ ForRecognition
Task.
Definition facepipelinepackage.h:63
Definition facepipelinepackage.h:117
ProcessFlag
Definition facepipelinepackage.h:121
@ ProcessedByDetector
Definition facepipelinepackage.h:124
@ WrittenToDatabase
Definition facepipelinepackage.h:126
@ ProcessedByTrainer
Definition facepipelinepackage.h:127
@ ProcessedByRecognizer
Definition facepipelinepackage.h:125
@ PreviewImageLoaded
Definition facepipelinepackage.h:123
@ NotProcessed
Definition facepipelinepackage.h:122
DImg image
Definition facepipelinepackage.h:139
QList< Identity > recognitionResults
Definition facepipelinepackage.h:141
FacePipelineFaceTagsIfaceList databaseFaces
Definition facepipelinepackage.h:142
int processedFaceCount
Definition facepipelinepackage.h:143
ProcessFlags processFlags
Definition facepipelinepackage.h:145
ItemInfo info
Definition facepipelinepackage.h:138
QList< QRectF > detectedFaces
Definition facepipelinepackage.h:140
Definition facetagsiface.h:34
Definition iteminfo.h:68
Definition loadingdescription.h:35
Definition facepipelinepackage.h:169
Definition tagregion.h:36
Definition datefolderview.cpp:34
bool operator==(const SearchTextSettings &a, const SearchTextSettings &b)
Definition searchtextbar.cpp:40