120 lines
2.8 KiB
C++
120 lines
2.8 KiB
C++
#ifndef Hd_AI_seg_module_H
|
||
#define Hd_AI_seg_module_H
|
||
|
||
#include <assert.h>
|
||
#include <atlstr.h>
|
||
#include <chrono>
|
||
#include <QtCore/qglobal.h>
|
||
|
||
#include <QByteArray>
|
||
#include <iostream>
|
||
#include <QDebug>
|
||
#include <qqueue.h>
|
||
#include <opencv2/imgproc.hpp>
|
||
#include <string.h>
|
||
#include <fstream>
|
||
#include <string>
|
||
#include <ctime>
|
||
|
||
#include <opencv2/opencv.hpp>
|
||
#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_seg_module,initParas
|
||
//运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程
|
||
class Hd_AI_seg_module :public Base
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
Hd_AI_seg_module();
|
||
virtual ~Hd_AI_seg_module();
|
||
//从类中读数据到实例对象
|
||
bool readData(std::vector<cv::Mat>&,QByteArray&);
|
||
//实例对象把数据写入到类
|
||
bool writeData(std::vector<cv::Mat>&, QByteArray&);
|
||
bool initParas(QByteArray&);
|
||
//运行(Logic_taskthread.cpp)
|
||
bool run();
|
||
//线程状态
|
||
bool checkStatus();// { return true; };
|
||
|
||
bool encodeResultValue(QVector<std::string> append_value,QByteArray &resultByte);
|
||
bool decodeAiValue(QByteArray byteArray,QVector<QByteArray> &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<cv::Mat> HikMat;
|
||
//输入关键字队列
|
||
QString saveKey="saveKey";
|
||
//结果路径文件夹队列
|
||
QString Dir2D="Dir2D";
|
||
//产品SN队列
|
||
QString SN="SN";
|
||
//产品时间戳队列
|
||
QString DateTime1="DateTime1";
|
||
|
||
int paramNum;
|
||
|
||
//是否使用线程检测方式
|
||
bool ifThreadRunDetect = false;
|
||
//检测结果图
|
||
std::vector<cv::Mat> resMat;
|
||
//检测结果
|
||
bool resIfNg = false;
|
||
|
||
QQueue<QByteArray> resByte;
|
||
|
||
//检测线程
|
||
void detectThread();
|
||
//存图线程
|
||
void saveImgThread();
|
||
|
||
//保存图片队列
|
||
QQueue<saveImgStruct> saveStruct;
|
||
|
||
//判断文件夹是否存在,不存在则创建
|
||
void isDirExist(QString fullDirName);
|
||
|
||
//存图加入队列
|
||
void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath);
|
||
};
|
||
|
||
extern "C"
|
||
{
|
||
Q_DECL_EXPORT Hd_AI_seg_module * create();
|
||
Q_DECL_EXPORT void destory(Hd_AI_seg_module * ptr);
|
||
}
|
||
//保存图片的结构体
|
||
struct saveImgStruct
|
||
{
|
||
cv::Mat out_Mat;
|
||
std::string saveKey; //关键字,用于LOG日志
|
||
std::string savePath; //保存路径
|
||
};
|
||
#endif // Hd_AI_927_2D_module_H
|