digiKam
Loading...
Searching...
No Matches
faceutils.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-08-08
7 * Description : FacesEngine database interface allowing easy manipulation of face tags
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Aditya Bhatt <adityabhatt1991 at gmail dot com>
10 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QStringList>
22
23// Local includes
24
25#include "identity.h"
27#include "iteminfo.h"
28#include "facetagseditor.h"
29#include "digikam_export.h"
30
31class QImage;
32
33namespace Digikam
34{
35
36class DImg;
37class ThumbnailLoadThread;
38class ThumbnailImageCatcher;
39
40class FaceUtils : public QObject,
41 public FaceTagsEditor
42{
43 Q_OBJECT
44
45public:
46
52
53public:
54
55 explicit FaceUtils(QObject* const parent = nullptr);
56 ~FaceUtils() override = default;
57
58 // --- Face detection and recognition ---
59
66 QList<FaceTagsIface> writeUnconfirmedResults(qlonglong imageid,
67 const QList<QRectF>& detectedFaces,
68 const QList<Identity>& recognitionResults,
69 const QSize& fullSize);
70
71 // --- Status flags ---
72
76 bool hasBeenScanned(const ItemInfo& info) const;
77 bool hasBeenScanned(qlonglong imageid) const;
78 bool normalTagChanged() const;
79
83 void markAsScanned(qlonglong imageid, bool hasBeenScanned = true) const;
84 void markAsScanned(const ItemInfo& info, bool hasBeenScanned = true) const;
85
86 // --- Utilities ---
87
92/*
93 void fillImageInFaces(ThumbnailImageCatcher* const catcher,
94 const QString& filePath,
95 QList<Face>& faceList,
96 const QSize& scaleSize = QSize()) const;
97*/
98
103 void storeThumbnails(ThumbnailLoadThread* const thread,
104 const QString& filePath,
105 const QList<FaceTagsIface>& databaseFaces,
106 const DImg& image);
107
111 QList<FaceTagsIface> toFaceTagsIfaces(qlonglong imageid,
112 const QList<QRectF>& detectedFaces,
113 const QList<Identity>& recognitionResults,
114 const QSize& fullSize) const;
115
121 static QRect faceRectToDisplayRect(const QRect& rect);
122
123 // TODO: investigate this method.
124
125 Identity identityForTag(int tagId, FacialRecognitionWrapper& recognizer) const;
126 Identity identityForUuid(const QString& uuid, const FacialRecognitionWrapper& recognizer) const;
127 int tagForIdentity(const Identity& identity) const;
128
129protected:
130
134 void addNormalTag(qlonglong imageId, int tagId) override;
135 void removeNormalTag(qlonglong imageId, int tagId) override;
136 void removeNormalTags(qlonglong imageId, const QList<int>& tagIds) override;
137
138private:
139
140 bool m_normalTagChanged = false;
141
142private:
143
144 // Disable
145 FaceUtils(const FaceUtils&) = delete;
146 FaceUtils& operator=(const FaceUtils&) = delete;
147};
148
149} // Namespace Digikam
Definition dimg.h:52
Definition facetagseditor.h:41
QList< FaceTagsIface > databaseFaces(qlonglong imageid) const
Definition facetagseditor.cpp:43
Definition faceutils.h:42
Identity identityForTag(int tagId, FacialRecognitionWrapper &recognizer) const
Definition faceutils.cpp:279
bool hasBeenScanned(const ItemInfo &info) const
Definition faceutils.cpp:54
~FaceUtils() override=default
static QRect faceRectToDisplayRect(const QRect &rect)
Definition faceutils.cpp:365
Identity identityForUuid(const QString &uuid, const FacialRecognitionWrapper &recognizer) const
Definition faceutils.cpp:298
bool normalTagChanged() const
Definition faceutils.cpp:59
void markAsScanned(qlonglong imageid, bool hasBeenScanned=true) const
Definition faceutils.cpp:64
int tagForIdentity(const Identity &identity) const
Definition faceutils.cpp:306
void removeNormalTags(qlonglong imageId, const QList< int > &tagIds) override
Definition faceutils.cpp:356
QList< FaceTagsIface > writeUnconfirmedResults(qlonglong imageid, const QList< QRectF > &detectedFaces, const QList< Identity > &recognitionResults, const QSize &fullSize)
Definition faceutils.cpp:146
FaceRecognitionSteps
Definition faceutils.h:48
@ DetectAndRecognize
Definition faceutils.h:50
@ DetectFaceRegions
Definition faceutils.h:49
void removeNormalTag(qlonglong imageId, int tagId) override
Definition faceutils.cpp:320
QList< FaceTagsIface > toFaceTagsIfaces(qlonglong imageid, const QList< QRectF > &detectedFaces, const QList< Identity > &recognitionResults, const QSize &fullSize) const
Definition faceutils.cpp:84
void storeThumbnails(ThumbnailLoadThread *const thread, const QString &filePath, const QList< FaceTagsIface > &databaseFaces, const DImg &image)
Definition faceutils.cpp:123
void addNormalTag(qlonglong imageId, int tagId) override
Definition faceutils.cpp:313
Definition facialrecognition_wrapper.h:39
Definition identity.h:31
Definition iteminfo.h:68
Definition thumbnailloadthread.h:36
Definition datefolderview.cpp:34