#ifndef _QALGDETECT_H_ #define _QALGDETECT_H_ #include #include #include #include #include "IWheelModel.h" #include "ThreadPool.hpp" #include "threadsafe_list.hpp" using namespace cv; typedef std::function AlgResultCallBack; typedef std::function AlgCallBack; class QAlgDetect : public QObject { Q_OBJECT public: QAlgDetect(QObject *parent = nullptr); ~QAlgDetect(); virtual bool detect(QImage img, QVariantMap param, AlgResultCallBack func); protected: cv::Mat findCircle(cv::Mat srcImg, QVariantMap param); Mat DetectCircle(Mat img, QPointF center, double radius, bool bEqual); QString matchTemplate(const QMap* modelMap, cv::Mat detectImg, double* pMinDis /*= NULL*/, int minDisNum /*= -1*/) const; void taskFunc(cv::Mat srcImg, QVariantMap param, AlgResultCallBack func); private: std::shared_ptr m_pThreadPool; }; #endif