增加halconGuard类,用于防止halcon算法的输入输出和程序不一致而引起的报错,并且会检查算法文件是否存在,如不存在则会弹窗提示。 增加handleAiGpuThreadGuard类,用于防止因重复调用同一个模型而引起的报错,并且支持不停机更新模型,支持初始化时检测模型文件是否存在。 增加内存占用显示控件。 用户管理增加root权限,默认密码为dseuiroot,模型热更新时需要此权限。 支持缓存界面上的检测数据。 相机模块新增在回调后的指定时间没有取图时则清空容器的功能。 增加等待结果汇总功能,在启用时同一个SN的图片会等待总结果后再进行存图。 存图线程修改为多线程编码,单线程储存,提高IO效率。并且增加根据内存占用的百分比更新存图逻辑的功能,默认占用超过70%不储存OK原图,超过80%不储存原图,超过90%时不储存所有图片。
85 lines
2.4 KiB
C++
85 lines
2.4 KiB
C++
#ifndef Hd_CameraModule_HIK_General_H
|
|
#define Hd_CameraModule_HIK_General_H
|
|
#include <QtCore/qglobal.h>
|
|
#include <MvCameraControl.h>
|
|
#include <CameraParams.h>
|
|
#include <Windows.h>
|
|
#include <time.h>
|
|
#include <QThread>
|
|
#include <QQueue>
|
|
#include <QMutex>
|
|
#include <QDebug>
|
|
#include <subModuleBase.h>
|
|
|
|
using namespace cv;
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
static MV_CC_DEVICE_INFO_LIST QByteArrayToMV_CC_DeviceInfoList(const QByteArray& byteArray) {
|
|
MV_CC_DEVICE_INFO_LIST deviceInfoList;
|
|
if (byteArray.size() == sizeof(MV_CC_DEVICE_INFO_LIST)) {
|
|
memcpy(&deviceInfoList, byteArray.constData(), sizeof(MV_CC_DEVICE_INFO_LIST));
|
|
}
|
|
else {
|
|
qDebug() << "Invalid size of QByteArray for MV_CC_DEVICE_INFO_LIST!";
|
|
}
|
|
return deviceInfoList;
|
|
}
|
|
bool IsColor(MvGvspPixelType enType)
|
|
{
|
|
switch (enType)
|
|
{
|
|
case PixelType_Gvsp_RGB8_Packed:
|
|
case PixelType_Gvsp_YUV422_Packed:
|
|
case PixelType_Gvsp_YUV422_YUYV_Packed:
|
|
case PixelType_Gvsp_BayerGR8:
|
|
case PixelType_Gvsp_BayerRG8:
|
|
case PixelType_Gvsp_BayerGB8:
|
|
case PixelType_Gvsp_BayerBG8:
|
|
case PixelType_Gvsp_BayerGB10:
|
|
case PixelType_Gvsp_BayerGB10_Packed:
|
|
case PixelType_Gvsp_BayerBG10:
|
|
case PixelType_Gvsp_BayerBG10_Packed:
|
|
case PixelType_Gvsp_BayerRG10:
|
|
case PixelType_Gvsp_BayerRG10_Packed:
|
|
case PixelType_Gvsp_BayerGR10:
|
|
case PixelType_Gvsp_BayerGR10_Packed:
|
|
case PixelType_Gvsp_BayerGB12:
|
|
case PixelType_Gvsp_BayerGB12_Packed:
|
|
case PixelType_Gvsp_BayerBG12:
|
|
case PixelType_Gvsp_BayerBG12_Packed:
|
|
case PixelType_Gvsp_BayerRG12:
|
|
case PixelType_Gvsp_BayerRG12_Packed:
|
|
case PixelType_Gvsp_BayerGR12:
|
|
case PixelType_Gvsp_BayerGR12_Packed:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
class Hd_CameraModule_HIK_General :public dsModuleBase
|
|
{
|
|
public:
|
|
Hd_CameraModule_HIK_General();
|
|
virtual ~Hd_CameraModule_HIK_General();
|
|
//从类中读数据到实例对象
|
|
bool readData(std::vector<cv::Mat>& mat, QByteArray& data);
|
|
//实例对象把数据写入到类
|
|
bool writeData(std::vector<cv::Mat>& mat, QByteArray& data);
|
|
bool initParas(QByteArray& initData);
|
|
bool run();
|
|
bool checkStatus();
|
|
private:
|
|
|
|
//MyThread *m_thread = nullptr;
|
|
//QMutex* m_mutex;
|
|
};
|
|
|
|
extern "C"
|
|
{
|
|
Q_DECL_EXPORT Hd_CameraModule_HIK_General * create();
|
|
Q_DECL_EXPORT void destory(Hd_CameraModule_HIK_General * ptr);
|
|
}
|
|
|
|
#endif // Hd_CameraModule_HIK_hard_H
|
|
//Hd_CameraModule_HIK_General
|