81 lines
2.1 KiB
C++
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 |