#ifndef Hd_AI_2D3Ddata_module_H #define Hd_AI_2D3Ddata_module_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "imgproc/imgproc_c.h" #include "base.h" #pragma execution_character_set("utf-8") //保存图片的结构体 struct saveImgStruct; //{ // cv::Mat out_Mat; // std::string saveKey; //关键字,用于LOG日志 // std::string savePath; //保存路径 //}; //初始化流程(一次):Hd_AI_2D3Ddata_module,initParas //运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程 class Hd_AI_2D3Ddata_module :public Base { Q_OBJECT public: Hd_AI_2D3Ddata_module(); virtual ~Hd_AI_2D3Ddata_module(); //从类中读数据到实例对象 bool readData(std::vector&,QByteArray&); //实例对象把数据写入到类 bool writeData(std::vector&, QByteArray&); bool initParas(QByteArray&); //运行(Logic_taskthread.cpp) bool run(); //线程状态 bool checkStatus();// { return true; }; bool encodeResultValue(QVector append_value,QByteArray &resultByte); bool decodeAiValue(QByteArray byte,QVector &vec_ret); //---------检测流程,根据实际项目修改--------- bool AIdetect(cv::Mat img2D, QString saveKey, QString Dir2D, QString SN, QString DataTime); private: int allNum = 0; int StationNo; int img2D = 2; bool moduleStatus = true; //输入图片队列 QQueue HikMat; //输入关键字队列 QString saveKey="saveKey"; //结果路径文件夹队列 QString Dir2D="Dir2D"; //产品SN队列 QString SN="SN"; //产品时间戳队列 QString DateTime1="DateTime1"; int paramNum; //是否使用线程检测方式 bool ifThreadRunDetect = false; //检测结果图 std::vector resMat; //检测结果 bool resIfNg = false; QQueue resByte; //检测线程 void detectThread(); //存图线程 void saveImgThread(); //保存图片队列 QQueue saveStruct; //判断文件夹是否存在,不存在则创建 void isDirExist(QString fullDirName); //存图加入队列 void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); }; extern "C" { Q_DECL_EXPORT Hd_AI_2D3Ddata_module * create(); Q_DECL_EXPORT void destory(Hd_AI_2D3Ddata_module * ptr); } //保存图片的结构体 struct saveImgStruct { cv::Mat out_Mat; std::string saveKey; //关键字,用于LOG日志 std::string savePath; //保存路径 }; #endif // Hd_AI_927_2D_module_H