Files
2024-10-11 10:07:08 +08:00

120 lines
2.8 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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