| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #ifndef INTERACTIVEFACE_H
- #define INTERACTIVEFACE_H
- #include <QObject>
- #include <QJSValue>
- #include <QTimer>
- #include <QDateTime>
- #include <QImage>
- #include <QVideoFrame>
- #include <QPainter>
- #include <QBuffer>
- #include <QString>
- #include <QBuffer>
- #include <QByteArray>
- #include <QTimerEvent>
- #include <QMutex>
- #include <QMutexLocker>
- #include <QCamera>
- #include <QVideoSink>
- #include <QMediaDevices>
- #include <QMediaCaptureSession>
- #include <QQuickImageProvider>
- #include <QtMath>
- #include <QRandomGenerator>
- #include "template_singleton.h"
- #include "sdk/hrsdk/inc/amcomdef.h"
- #include "sdk/hrsdk/inc/arcsoft_face_sdk.h"
- #include "sdk/hrsdk/inc/asvloffscreen.h"
- #include "sdk/hrsdk/inc/merror.h"
- #include "user/filelogger.h"
- #define INTERACTIVE_FACE_IMAGE_URL "InteractiveFaceImage"
- class InteractiveFace : public QQuickImageProvider
- {
- SINGLETON_DEFINE(InteractiveFace) // 定义为单例类
- Q_OBJECT
- private:
- InteractiveFace(QObject *parent = nullptr);
- ~InteractiveFace();
- // 获取图像url
- QString getImageUrl();
- public:
- // 设置图像采集回调
- Q_INVOKABLE void setCameraImageGatherCallBack(QJSValue callback);
- // 设置发现人脸回调
- Q_INVOKABLE void setCameraImageAppearCallBack(QJSValue callback);
- // 设置人脸停留回调(5s)
- Q_INVOKABLE void setCameraImageRemainCallBack(QJSValue callback);
- // 回调函数设置
- Q_INVOKABLE void setCameraImageCallBack(QJSValue gatherCallback,
- QJSValue appearCallback,
- QJSValue remainCallback);
- // 发现人脸状态
- Q_INVOKABLE void setCallBackFaceStatus(QJSValue isAppearCallback);
- // 相机图像播放 (采集)
- Q_INVOKABLE void cameraImagePlay();
- // 相机图像停止 (采集)
- Q_INVOKABLE void cameraImageStop();
- // 获取图像
- QImage getImage();
- protected:
- QImage requestImage(const QString &, QSize *, const QSize &);
- void timerEvent(QTimerEvent *event);
- private:
- // 初始化虹软人脸识别
- void initEngine();
- // 销毁虹软人脸识别
- void destroyEngine();
- // 初始化相机
- void initCamera();
- // 销毁相机
- void destroyCamera();
- // 判断电脑上是否存在摄像头
- bool hasCamera();
- void cameraPlay();
- void cameraStop();
- public:
- QMutex m_mutex;
- private:
- int m_timerId; // 当前定时器ID
- int m_FrameId; // 帧过滤
- QImage m_image; // 图像
- MHandle m_engine; // 虹软引擎
- QCamera m_camera; // 照相机
- QVideoSink m_videoSink; // 视频接收器
- QMediaCaptureSession m_session; // 媒体连接器
- // 记录信息
- qint32 m_laseCount = 0;
- qint64 m_laseEpoch = 0;
- QJSValue m_imageGatherCallback; // 图像采集回调
- QJSValue m_imageAppearCallback; // 发现人脸回调
- QJSValue m_imageRemainCallback; // 人脸停留回调
- QJSValue m_isAppearCallback;
- };
- #endif // INTERACTIVEFACE_H
|