facedetectelement.h
9.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
/* Webcamoid, webcam capture application.
* Copyright (C) 2016 Gonzalo Exequiel Pedone
*
* Webcamoid is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Webcamoid is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
*
* Web-Site: http://webcamoid.github.io/
*/
#ifndef FACEDETECTELEMENT_H
#define FACEDETECTELEMENT_H
#include <qrgb.h>
#include <iak/akelement.h>
class FaceDetectElementPrivate;
class FaceDetectElement: public AkElement
{
Q_OBJECT
Q_PROPERTY(QString haarFile
READ haarFile
WRITE setHaarFile
RESET resetHaarFile
NOTIFY haarFileChanged)
Q_PROPERTY(MarkerType markerType
READ markerType
WRITE setMarkerType
RESET resetMarkerType
NOTIFY markerTypeChanged)
Q_PROPERTY(QRgb markerColor
READ markerColor
WRITE setMarkerColor
RESET resetMarkerColor
NOTIFY markerColorChanged)
Q_PROPERTY(int markerWidth
READ markerWidth
WRITE setMarkerWidth
RESET resetMarkerWidth
NOTIFY markerWidthChanged)
Q_PROPERTY(QString markerStyle
READ markerStyle
WRITE setMarkerStyle
RESET resetMarkerStyle
NOTIFY markerStyleChanged)
Q_PROPERTY(QString markerImage
READ markerImage
WRITE setMarkerImage
RESET resetMarkerImage
NOTIFY markerImageChanged)
Q_PROPERTY(QString backgroundImage
READ backgroundImage
WRITE setBackgroundImage
RESET resetBackgroundImage
NOTIFY backgroundImageChanged)
Q_PROPERTY(QSize pixelGridSize
READ pixelGridSize
WRITE setPixelGridSize
RESET resetPixelGridSize
NOTIFY pixelGridSizeChanged)
Q_PROPERTY(int blurRadius
READ blurRadius
WRITE setBlurRadius
RESET resetBlurRadius
NOTIFY blurRadiusChanged)
Q_PROPERTY(QSize scanSize
READ scanSize
WRITE setScanSize
RESET resetScanSize
NOTIFY scanSizeChanged)
Q_PROPERTY(qreal scale
READ scale
WRITE setScale
RESET resetScale
NOTIFY scaleChanged)
Q_PROPERTY(qreal rScale
READ rScale
WRITE setRScale
RESET resetRScale
NOTIFY rScaleChanged)
Q_PROPERTY(bool smootheEdges
READ smootheEdges
WRITE setSmootheEdges
RESET resetSmootheEdges
NOTIFY smootheEdgesChanged)
Q_PROPERTY(int hOffset
READ hOffset
WRITE setHOffset
RESET resetHOffset
NOTIFY hOffsetChanged)
Q_PROPERTY(int vOffset
READ vOffset
WRITE setVOffset
RESET resetVOffset
NOTIFY vOffsetChanged)
Q_PROPERTY(int wAdjust
READ wAdjust
WRITE setWAdjust
RESET resetWAdjust
NOTIFY wAdjustChanged)
Q_PROPERTY(int hAdjust
READ hAdjust
WRITE setHAdjust
RESET resetHAdjust
NOTIFY hAdjustChanged)
Q_PROPERTY(int rWAdjust
READ rWAdjust
WRITE setRWAdjust
RESET resetRWAdjust
NOTIFY rWAdjustChanged)
Q_PROPERTY(int rHAdjust
READ rHAdjust
WRITE setRHAdjust
RESET resetRHAdjust
NOTIFY rHAdjustChanged)
Q_PROPERTY(int rHRadius
READ rHRadius
WRITE setRHRadius
RESET resetRHRadius
NOTIFY rHRadiusChanged)
Q_PROPERTY(int rVRadius
READ rVRadius
WRITE setRVRadius
RESET resetRVRadius
NOTIFY rVRadiusChanged)
public:
enum MarkerType
{
MarkerTypeRectangle,
MarkerTypeEllipse,
MarkerTypeImage,
MarkerTypePixelate,
MarkerTypeBlur,
MarkerTypeBlurOuter,
MarkerTypeImageOuter
};
Q_ENUM(MarkerType)
FaceDetectElement();
~FaceDetectElement();
Q_INVOKABLE QString haarFile() const;
Q_INVOKABLE MarkerType markerType() const;
Q_INVOKABLE QRgb markerColor() const;
Q_INVOKABLE int markerWidth() const;
Q_INVOKABLE QString markerStyle() const;
Q_INVOKABLE QString markerImage() const;
Q_INVOKABLE QString backgroundImage() const;
Q_INVOKABLE QSize pixelGridSize() const;
Q_INVOKABLE int blurRadius() const;
Q_INVOKABLE QSize scanSize() const;
Q_INVOKABLE QVector<QRect> detectFaces(const AkVideoPacket &packet);
Q_INVOKABLE qreal scale() const;
Q_INVOKABLE qreal rScale() const;
Q_INVOKABLE bool smootheEdges() const;
Q_INVOKABLE int hOffset() const;
Q_INVOKABLE int vOffset() const;
Q_INVOKABLE int wAdjust() const;
Q_INVOKABLE int hAdjust() const;
Q_INVOKABLE int rWAdjust() const;
Q_INVOKABLE int rHAdjust() const;
Q_INVOKABLE int rHRadius() const;
Q_INVOKABLE int rVRadius() const;
private:
FaceDetectElementPrivate *d;
protected:
QString controlInterfaceProvide(const QString &controlId) const override;
void controlInterfaceConfigure(QQmlContext *context,
const QString &controlId) const override;
AkPacket iVideoStream(const AkVideoPacket &packet) override;
signals:
void haarFileChanged(const QString &haarFile);
void markerTypeChanged(MarkerType markerType);
void markerColorChanged(QRgb markerColor);
void markerWidthChanged(int markerWidth);
void markerStyleChanged(const QString &markerStyle);
void markerImageChanged(const QString &markerImage);
void backgroundImageChanged(const QString &backgroundImage);
void pixelGridSizeChanged(const QSize &pixelGridSize);
void blurRadiusChanged(int blurRadius);
void scanSizeChanged(const QSize &scanSize);
void scaleChanged(qreal scale);
void rScaleChanged(qreal rScale);
void smootheEdgesChanged(bool smootheEdges);
void hOffsetChanged(int hOffset);
void vOffsetChanged(int vOffset);
void wAdjustChanged(int wAdjust);
void hAdjustChanged(int hAdjust);
void rWAdjustChanged(int rWAdjust);
void rHAdjustChanged(int rHAdjust);
void rHRadiusChanged(int rHRadius);
void rVRadiusChanged(int rVRadius);
public slots:
void setHaarFile(const QString &haarFile);
void setMarkerType(MarkerType markerType);
void setMarkerColor(QRgb markerColor);
void setMarkerWidth(int markerWidth);
void setMarkerStyle(const QString &markerStyle);
void setMarkerImage(const QString &markerImage);
void setBackgroundImage(const QString &backgroundImage);
void setPixelGridSize(const QSize &pixelGridSize);
void setBlurRadius(int blurRadius);
void setScanSize(const QSize &scanSize);
void setScale(qreal scale);
void setRScale(qreal rScale);
void setSmootheEdges(bool smootheEdges);
void setHOffset(int hOffset);
void setVOffset(int vOffset);
void setWAdjust(int wAdjust);
void setHAdjust(int hAdjust);
void setRWAdjust(int rWAdjust);
void setRHAdjust(int rHAdjust);
void setRHRadius(int rHRadius);
void setRVRadius(int rVRadius);
void resetHaarFile();
void resetMarkerType();
void resetMarkerColor();
void resetMarkerWidth();
void resetMarkerStyle();
void resetMarkerImage();
void resetBackgroundImage();
void resetPixelGridSize();
void resetBlurRadius();
void resetScanSize();
void resetScale();
void resetRScale();
void resetSmootheEdges();
void resetHOffset();
void resetVOffset();
void resetWAdjust();
void resetHAdjust();
void resetRWAdjust();
void resetRHAdjust();
void resetRHRadius();
void resetRVRadius();
};
Q_DECL_EXPORT QDataStream &operator >>(QDataStream &istream, FaceDetectElement::MarkerType &markerType);
Q_DECL_EXPORT QDataStream &operator <<(QDataStream &ostream, FaceDetectElement::MarkerType markerType);
Q_DECLARE_METATYPE(FaceDetectElement::MarkerType)
#endif // FACEDETECTELEMENT_H