升级到c++11,在存图文件夹不存在时自动创建,修复大量以byte为变量名的问题

This commit is contained in:
rci
2024-09-30 15:36:39 +08:00
parent ddde443cc9
commit a90d0d2471
45 changed files with 833 additions and 203 deletions
+20 -20
View File
@@ -164,8 +164,8 @@ Logic_transfer::Logic_transfer()
{
showMutex = new QMutex;
ifRuntransfer = true;
//通用逻辑接口
//加载逻辑dll
//ͨ���߼��ӿ�
//�����߼�dll
QLibrary* m_lib = new QLibrary("Hd_LogicDll_module.dll");
bool flag = m_lib->load();
if (!m_lib->isLoaded())
@@ -185,20 +185,20 @@ Logic_transfer::Logic_transfer()
Logic_ptr = createFun();
destory_Logic = releaseFun;
//加载并检查配置文件:bin/camera_cfg.json
//���ز���������ļ���bin/camera_cfg.json
//m_jsonObj =load_camera_cfg();
//check_cmeraCfg();
//Logic_ptr->setJsonObject(m_jsonObj);
//信号与槽
//����
if(Logic_ptr) {
//connect(Logic_ptr, SIGNAL(Logic_sendImage(QString, cv::Mat)), this, SLOT(base_Logic_sendImage(QString, cv::Mat))); // 传递图片
connect(Logic_ptr, SIGNAL(Logic_writeData(QString, QString, QString, QByteArray, QString)), this, SLOT(base_Logic_writeData(QString, QString, QString, QByteArray, QString)));// 传递数据
//connect(Logic_ptr, SIGNAL(Logic_sendImage(QString, cv::Mat)), this, SLOT(base_Logic_sendImage(QString, cv::Mat))); // ����ͼƬ
connect(Logic_ptr, SIGNAL(Logic_writeData(QString, QString, QString, QByteArray, QString)), this, SLOT(base_Logic_writeData(QString, QString, QString, QByteArray, QString)));// ��������
QFuture<void>muf = QtConcurrent::run(this, &Logic_transfer::check_sendImgStruct);
}
}
}
Sleep(50);
//自动写Log日志功能;bin/Log
//�Զ�дLog��־���ܣ�bin/Log
qInstallMessageHandler(LogMsgOutput);
}
@@ -210,12 +210,12 @@ void Logic_transfer::check_sendImgStruct()
//if (Logic_ptr->queue_sendImgStruct.size() > 0)
if (Logic_ptr->get_sendImgStruct(myS))
{
//QMutexLocker locker(sendImgStructMutex); // 加锁
//QMutexLocker locker(sendImgStructMutex); // ����
//sendImgStruct mS;
//mS.send_Mat = myL.send_Mat;
//mS.cameraKey_index = myL.cameraKey_index;
////堆积了,只显示最新的
////�ѻ��ˣ�ֻ��ʾ���µ�
//for (int i = 0; i < queue_sendImgStruct.size(); i++)
// if (myL.cameraKey_index == queue_sendImgStruct[i].cameraKey_index)
// {
@@ -235,7 +235,7 @@ void Logic_transfer::check_sendImgStruct()
}
bool Logic_transfer::getShowQImage(QQueue< showImgStruct>& my_showImgStruct)
{
QMutexLocker locker(showMutex); // 加锁
QMutexLocker locker(showMutex); // ����
//showImgStruct mS;
if (queue_showImgStruct.size() > 0)
{
@@ -251,24 +251,24 @@ void Logic_transfer::base_Logic_sendImage(QString key, cv::Mat mtx)
try
{
if (!mtx.empty()) {
if ((mtx.dataend - mtx.datastart) != mtx.cols * mtx.rows * mtx.channels()) //尝试能否解决mtx内容异常问题
if ((mtx.dataend - mtx.datastart) != mtx.cols * mtx.rows * mtx.channels()) //�����ܷ���mtx�����쳣����
{
qCritical() << __FUNCTION__ << " line:" << __LINE__ << " mtx.dataend - mtx.datastart err!!:";
qCritical() << __FUNCTION__ << " line:" << __LINE__ << " mtx.dataend - mtx.datastart err����:";
return;// false;
}
cv::Mat rgb;
//while (mtx.cols > 2000 || mtx.rows > 2000)
// cv::resize(mtx, mtx, cv::Size(), 0.1, 0.1); //吃cpu性能,i7 8700,4800*4800的resize耗时100ms;QImage*的scaled缩放,耗时200ms
// cv::resize(mtx, mtx, cv::Size(), 0.1, 0.1); //��cpu���ܣ�i7 8700��4800*4800��resize��ʱ100ms��QImage*��scaled���ţ���ʱ200ms
QImage* itemImage = nullptr;
if (mtx.type() == CV_8UC1)
{
rgb = mtx.clone(); //mtx.data检查后,只有2个数据,clone崩溃
rgb = mtx.clone(); //mtx.data����ֻ��2�����ݣ�clone����
itemImage = new QImage(QSize(rgb.cols, rgb.rows), QImage::Format_Grayscale8);
QImage qim((const unsigned char*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_Grayscale8);
*itemImage = qim.copy();
}
else if (mtx.type() == CV_16U) // 双通道转单通道显示
else if (mtx.type() == CV_16U) // ˫ͨ��ת��ͨ����ʾ
{
cv::normalize(mtx, mtx, 0, 255, cv::NORM_MINMAX);
cv::convertScaleAbs(mtx, rgb);
@@ -292,12 +292,12 @@ void Logic_transfer::base_Logic_sendImage(QString key, cv::Mat mtx)
}
//emit LogicTransfer_sendImage(key, itemImage);
QMutexLocker locker(showMutex); // 加锁
QMutexLocker locker(showMutex); // ����
showImgStruct mS;
mS.show_QImage = itemImage;
mS.cameraKey_index = key;
////堆积了,只显示最新的
////�ѻ��ˣ�ֻ��ʾ���µ�
//for (int i = 0; i < queue_showImgStruct.size(); i++)
// if (key == queue_showImgStruct[i].cameraKey_index)
// {
@@ -321,7 +321,7 @@ Logic_transfer::~Logic_transfer()
ifRuntransfer = false;
Sleep(100);
//通用逻辑接口
//ͨ���߼��ӿ�
destory_Logic(Logic_ptr);
}
@@ -330,9 +330,9 @@ void Logic_transfer::base_Logic_sendTcpStatus(bool flag)
{
emit LogicTransfer_sendTcpStatus(flag);
}
void Logic_transfer::base_Logic_writeData(QString key, QString cameraName, QString snInfo, QByteArray byte, QString sendNgInfo)
void Logic_transfer::base_Logic_writeData(QString key, QString cameraName, QString snInfo, QByteArray byteArray, QString sendNgInfo)
{
emit LogicTransfer_writeData(key, cameraName, snInfo, byte, sendNgInfo);
emit LogicTransfer_writeData(key, cameraName, snInfo, byteArray, sendNgInfo);
}
void Logic_transfer::base_Logic_cameraDisconnect(QString msg, bool status)
{