digiKam
Loading...
Searching...
No Matches
opencvdnnfacedetector.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam
4 *
5 * Date : 2019-07-22
6 * Description : Class to perform faces detection using OpenCV DNN module
7 *
8 * SPDX-FileCopyrightText: 2019 by Thanh Trung Dinh <dinhthanhtrung1996 at gmail dot com>
9 * SPDX-FileCopyrightText: 2020-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2024 by Michael Miller <michael underscore miller at msn 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 <QImage>
21#include <QList>
22#include <QRect>
23
24// Local includes
25
26#include "digikam_opencv.h"
27#include "dimg.h"
28#include "dnnfacedetectorbase.h"
29
30namespace Digikam
31{
32
39
40class DIGIKAM_EXPORT OpenCVDNNFaceDetector
41{
42
43public:
44
45 explicit OpenCVDNNFaceDetector(DetectorNNModel model = DetectorNNModel::DNNDetectorSSD);
47
48 cv::Mat prepareForDetection(const DImg& inputImage, cv::Size& paddedSize) const;
49 cv::Mat prepareForDetection(const QImage& inputImage, cv::Size& paddedSize) const;
50 cv::Mat prepareForDetection(const QString& inputImagePath, cv::Size& paddedSize) const;
51 cv::Mat prepareForDetectionYuNet(cv::Mat& cvImage, cv::Size& paddedSize) const;
52
53 void setAccuracy(const int accuracy);
54 void setFaceDetectionSize(FaceScanSettings::FaceDetectionSize size);
55
56 QList<QRect> detectFaces(const cv::Mat& inputImage, const cv::Size& paddedSize);
57 std::vector<cv::Rect> cvDetectFaces(const cv::Mat& inputImage, const cv::Size& paddedSize);
58
63 static int recommendedImageSizeForDetection();
64
65private:
66
67 cv::Mat prepareForDetection(cv::Mat& cvImage, cv::Size& paddedSize) const;
68
69private:
70
71 // Disable
73 OpenCVDNNFaceDetector& operator=(const OpenCVDNNFaceDetector&) = delete;
74
75private:
76
77 DetectorNNModel m_modelType;
78 DNNFaceDetectorBase* m_inferenceEngine = nullptr;
79};
80
81} // namespace Digikam
Definition dimg.h:52
Definition dnnfacedetectorbase.h:37
FaceDetectionSize
Definition facescansettings.h:76
Definition opencvdnnfacedetector.h:41
Definition datefolderview.cpp:34
DetectorNNModel
Definition opencvdnnfacedetector.h:34
@ DNNDetectorSSD
SSD MobileNet neural network inference [https://github.com/arunponnusamy/cvlib].
Definition opencvdnnfacedetector.h:35
@ DNNDetectorYOLOv3
YOLO neural network inference [https://github.com/sthanhng/yoloface].
Definition opencvdnnfacedetector.h:36
@ DNNDetectorYuNet
YuNet neural network inference [https://github.com/opencv/opencv_zoo/tree/main].
Definition opencvdnnfacedetector.h:37