Files
2024-09-12 17:01:38 +08:00

81 lines
2.1 KiB
C++

#include <QThread>
#include <QObject>
#include <opencv.hpp>
#include <threadPoolManager.h>
#include <detData.h>
#include <appConfig/appConfig.h>
#include <appCore.hpp>
class detProcess;
class manualDetThread :public QThread
{
Q_OBJECT
public:
detDataManager* _detDataManager;
detThreadManager* _threadManager;
appConfig* _appConfig;
//检测参数
std::vector<std::string> imgPathStr;
int algoIndex = 0;
int Pos = 0;
manualDetThread()
{
_appConfig = &_core._appConfig;
}
void initialization(detProcess* _appCore);
void run()
{
emit _core._qtFunc.uiModuleHistoryListWidget_reset();
int pathCount = imgPathStr.size();
std::vector<std::shared_ptr<cv::Mat>> mats;
std::vector<std::vector<std::string>>files(imgPathStr.size(),std::vector<std::string>());//1层目录 2层文件名
for (int index = 0; index < imgPathStr.size(); index++)
{
fileManager::getAllFiles(imgPathStr[index], files[index], "jpg");
fileManager::getAllFiles(imgPathStr[index], files[index], "bmp");
fileManager::getAllFiles(imgPathStr[index], files[index], "tiff");
}
int filesMax = 0;
for (auto vec : files)
filesMax = getMax(filesMax, (int)vec.size());
for (int i = 0 ;i < filesMax;i++)
{
std::shared_ptr <detData> data = _detDataManager->insertDetData("Manual", "Manual", 0, 1);
data->algoThreadIndex = algoIndex;
data->resShowIndex = 0;
data->oriImgMutex.lock();
for(int o = 0 ; o < pathCount;o++)
{
if(i >= files[0].size())
data->oriImgs.push_back(cv::Mat());
else
data->oriImgs.push_back(cv::imread(files[0][i], cv::IMREAD_UNCHANGED));
}
data->oriImgMutex.unlock();
_threadManager->addTask(data);//添加任务
emit _core._qtFunc.uiModuleLocationMap_SetProductSignStatus(Pos, 1);
Pos++;
QThread::msleep(500);
}
emit finishImgReadSignal();
}
void startDet(std::vector<std::string> path,int index)
{
Pos = 0;
emit _core._qtFunc.uiModuleLocationMap_ResetToDefault();
imgPathStr = path;
algoIndex = index;
this->start();
}
public slots:
void startManualDetSlot(std::vector<std::string> path, int index)
{
startDet(path, index);
}
signals:
void finishImgReadSignal();
};
#pragma once