|
|
|
|
@ -1,608 +0,0 @@
|
|
|
|
|
#include "AlgorithmShare.h"
|
|
|
|
|
|
|
|
|
|
CAlgorithmShare::CAlgorithmShare() : m_mutex(QMutex::Recursive)
|
|
|
|
|
{
|
|
|
|
|
m_mapParamGroup.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CAlgorithmShare::~CAlgorithmShare()
|
|
|
|
|
{
|
|
|
|
|
// CleanUp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::Initialize()
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PLP_ALGORITHM_PARAM CAlgorithmShare::AddParam(const PLP_ALGORITHM_PARAM pParam, int idx /* = -1 */)
|
|
|
|
|
{
|
|
|
|
|
if (NULL == pParam)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
LP_ALGORITHM_PARAM* p = new LP_ALGORITHM_PARAM;
|
|
|
|
|
|
|
|
|
|
p->nID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
p->nSrcAlgoID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
p->nSrcParamID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
p->strName = pParam->strName;
|
|
|
|
|
p->type = pParam->type;
|
|
|
|
|
p->value = pParam->value;
|
|
|
|
|
p->strDescription = "";
|
|
|
|
|
p->bIsSave = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup[idx];
|
|
|
|
|
if (!pGroup)
|
|
|
|
|
{
|
|
|
|
|
m_mapParamGroup.remove(idx);
|
|
|
|
|
pGroup = new QVector < PLP_ALGORITHM_PARAM >;
|
|
|
|
|
m_mapParamGroup.insert(idx, pGroup);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pGroup->push_back(p);
|
|
|
|
|
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::DeleteParam(QString strName, int idx /* = -1 */)
|
|
|
|
|
{
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup.value(idx);
|
|
|
|
|
if (!pGroup)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
iter != pGroup->end(); ++iter)
|
|
|
|
|
{
|
|
|
|
|
PLP_ALGORITHM_PARAM p = *iter;
|
|
|
|
|
|
|
|
|
|
if (NULL != p)
|
|
|
|
|
{
|
|
|
|
|
if (p->strName == strName)
|
|
|
|
|
{
|
|
|
|
|
delete *iter;
|
|
|
|
|
iter = pGroup->erase(iter);
|
|
|
|
|
if (pGroup->empty())
|
|
|
|
|
{
|
|
|
|
|
delete pGroup;
|
|
|
|
|
m_mapParamGroup.remove(idx);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PLP_ALGORITHM_PARAM CAlgorithmShare::GetParam(QString strName, int idx /* = -1 */)
|
|
|
|
|
{
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup.value(idx);
|
|
|
|
|
if (!pGroup)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
iter != pGroup->end(); ++iter)
|
|
|
|
|
{
|
|
|
|
|
if (NULL != *iter)
|
|
|
|
|
{
|
|
|
|
|
PLP_ALGORITHM_PARAM p = *iter;
|
|
|
|
|
if (p->strName == strName)
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QStringList CAlgorithmShare::GroupList()
|
|
|
|
|
{
|
|
|
|
|
QStringList groupList;
|
|
|
|
|
groupList.clear();
|
|
|
|
|
|
|
|
|
|
QMap<int, QVector<PLP_ALGORITHM_PARAM>*>::Iterator it;
|
|
|
|
|
for (it = m_mapParamGroup.begin(); it != m_mapParamGroup.end(); ++it)
|
|
|
|
|
{
|
|
|
|
|
groupList.append(QString::number(it.key()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return groupList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QStringList CAlgorithmShare::ParamList(int idx /* = -1 */)
|
|
|
|
|
{
|
|
|
|
|
QStringList paramList;
|
|
|
|
|
paramList.clear();
|
|
|
|
|
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup.value(idx);
|
|
|
|
|
if (!pGroup)
|
|
|
|
|
return paramList;
|
|
|
|
|
|
|
|
|
|
for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
iter != pGroup->end(); ++iter)
|
|
|
|
|
{
|
|
|
|
|
if (NULL != *iter)
|
|
|
|
|
{
|
|
|
|
|
PLP_ALGORITHM_PARAM p = *iter;
|
|
|
|
|
paramList.append(p->strName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return paramList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::Save()
|
|
|
|
|
{
|
|
|
|
|
QJsonDocument document;
|
|
|
|
|
QJsonArray groupArray;
|
|
|
|
|
|
|
|
|
|
QMap<int, QVector<PLP_ALGORITHM_PARAM>*>::Iterator it;
|
|
|
|
|
for (it = m_mapParamGroup.begin(); it != m_mapParamGroup.end(); ++it)
|
|
|
|
|
{
|
|
|
|
|
int groupID = it.key();
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = it.value();
|
|
|
|
|
|
|
|
|
|
if (!SerializeToJson(&groupArray, groupID, pGroup))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.setArray(groupArray);
|
|
|
|
|
QByteArray byteArray = document.toJson();
|
|
|
|
|
|
|
|
|
|
if (byteArray.isNull())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
QString strExePath = QCoreApplication::applicationDirPath();
|
|
|
|
|
QString strFilePath = strExePath + LP_DETECTOR_BUSSINESS_CONFIG_PARAMSHARE_FILE;
|
|
|
|
|
QFile file(strFilePath);
|
|
|
|
|
if (file.open(QFile::WriteOnly | QFile::Text))
|
|
|
|
|
{
|
|
|
|
|
file.write(byteArray);
|
|
|
|
|
file.flush();
|
|
|
|
|
file.close();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::Load()
|
|
|
|
|
{
|
|
|
|
|
QByteArray byteArray;
|
|
|
|
|
QString strExePath = QCoreApplication::applicationDirPath();
|
|
|
|
|
QString strFilePath = strExePath + LP_DETECTOR_BUSSINESS_CONFIG_PARAMSHARE_FILE;
|
|
|
|
|
QFile file(strFilePath);
|
|
|
|
|
|
|
|
|
|
if (!file.exists())
|
|
|
|
|
{
|
|
|
|
|
file.open(QIODevice::ReadWrite);
|
|
|
|
|
file.close();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!file.open(QIODevice::ReadOnly))
|
|
|
|
|
{
|
|
|
|
|
qErrnoWarning("load algorithmshare: %s fail", strFilePath.toLocal8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
byteArray = file.readAll();
|
|
|
|
|
|
|
|
|
|
if (byteArray.size() == 0)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
QJsonParseError parse_error;
|
|
|
|
|
QJsonDocument document = QJsonDocument::fromJson(byteArray, &parse_error);
|
|
|
|
|
|
|
|
|
|
if (parse_error.error == QJsonParseError::NoError)
|
|
|
|
|
{
|
|
|
|
|
if (!document.isEmpty() && !document.isNull())
|
|
|
|
|
{
|
|
|
|
|
if (document.isArray())
|
|
|
|
|
{
|
|
|
|
|
QJsonArray groupArray = document.array();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < groupArray.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
QJsonObject jsonObject = groupArray[i].toObject();
|
|
|
|
|
if (!SerializeFromJson(&jsonObject))
|
|
|
|
|
{
|
|
|
|
|
qErrnoWarning("load algorithmshare: %s fail", strFilePath.toLocal8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::SerializeToJson(QJsonArray* pGroupArray, int nGroupID, QVector<PLP_ALGORITHM_PARAM>* pGroup)
|
|
|
|
|
{
|
|
|
|
|
if (!pGroupArray || !pGroup)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
QJsonObject jsonObject;
|
|
|
|
|
jsonObject.insert("group_id", nGroupID);
|
|
|
|
|
|
|
|
|
|
QJsonArray paramArray;
|
|
|
|
|
|
|
|
|
|
for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
iter != pGroup->end(); ++iter)
|
|
|
|
|
{
|
|
|
|
|
if (*iter)
|
|
|
|
|
{
|
|
|
|
|
PLP_ALGORITHM_PARAM p = (PLP_ALGORITHM_PARAM)*iter;
|
|
|
|
|
QJsonObject jsonParam;
|
|
|
|
|
jsonParam.insert("param_id", p->nID);
|
|
|
|
|
jsonParam.insert("param_src_task_id", p->nTaskID);
|
|
|
|
|
jsonParam.insert("param_src_algo_id", p->nSrcAlgoID);
|
|
|
|
|
jsonParam.insert("param_src_param_id", p->nSrcParamID);
|
|
|
|
|
jsonParam.insert("param_name", p->strName);
|
|
|
|
|
jsonParam.insert("param_type", p->type);
|
|
|
|
|
switch (p->type)
|
|
|
|
|
{
|
|
|
|
|
case LP_INT:
|
|
|
|
|
{
|
|
|
|
|
jsonParam.insert("param_value", p->value.toInt());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_BOOLEAN:
|
|
|
|
|
{
|
|
|
|
|
jsonParam.insert("param_value", p->value.toBool());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_STRING:
|
|
|
|
|
{
|
|
|
|
|
jsonParam.insert("param_value", p->value.toString());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_DOUBLE:
|
|
|
|
|
{
|
|
|
|
|
jsonParam.insert("param_value", p->value.toDouble());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_IMAGE:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_MAT:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_ROI:
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
LP_DETECTOR_ROI_DATA roiData = p->value.value<LP_DETECTOR_ROI_DATA>();
|
|
|
|
|
|
|
|
|
|
QString strExePath = QCoreApplication::applicationDirPath();
|
|
|
|
|
QString strFilePath = strExePath + "/" + "images/";
|
|
|
|
|
QDir dir;
|
|
|
|
|
if (!dir.exists(strFilePath))
|
|
|
|
|
{
|
|
|
|
|
if (!dir.mkdir(strFilePath))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString strName = QString("%1_%2").arg(QString::number(nGroupID)).arg(p->strName);
|
|
|
|
|
|
|
|
|
|
QString strFileName = strFilePath + strName + ".bmp";
|
|
|
|
|
std::string strpath = strFileName.toLocal8Bit().toStdString();
|
|
|
|
|
if (!roiData.img.empty() && !cv::imwrite(strpath/*strFileName.toLatin1().data()*/, roiData.img))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
int nCount = roiData.records.size();
|
|
|
|
|
if (nCount > 0)
|
|
|
|
|
{
|
|
|
|
|
QJsonArray recordArray;
|
|
|
|
|
for (int i = 0; i < nCount; i++)
|
|
|
|
|
{
|
|
|
|
|
QJsonArray itemArray;
|
|
|
|
|
Item_List record = roiData.records.at(i);
|
|
|
|
|
int nItemCount = record.size();
|
|
|
|
|
for (int j = 0; j < nItemCount; j++)
|
|
|
|
|
{
|
|
|
|
|
QJsonObject itemJson;
|
|
|
|
|
Feature_List item = record.at(j);
|
|
|
|
|
|
|
|
|
|
itemJson.insert("roi_item_type", item.first);
|
|
|
|
|
switch (item.first)
|
|
|
|
|
{
|
|
|
|
|
case RECTANGLE:
|
|
|
|
|
case ELLIPSE:
|
|
|
|
|
{
|
|
|
|
|
itemJson.insert("roi_item_value1", item.second.at(0));
|
|
|
|
|
itemJson.insert("roi_item_value2", item.second.at(1));
|
|
|
|
|
itemJson.insert("roi_item_value3", item.second.at(2));
|
|
|
|
|
itemJson.insert("roi_item_value4", item.second.at(3));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case CIRCLE:
|
|
|
|
|
{
|
|
|
|
|
itemJson.insert("roi_item_value1", item.second.at(0));
|
|
|
|
|
itemJson.insert("roi_item_value2", item.second.at(1));
|
|
|
|
|
itemJson.insert("roi_item_value3", item.second.at(2));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case POLY:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
itemArray.push_back(itemJson);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
recordArray.push_back(itemArray);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jsonParam.insert("param_value", recordArray);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jsonParam.insert("param_description", p->strDescription);
|
|
|
|
|
paramArray.push_back(jsonParam);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (paramArray.size() > 0)
|
|
|
|
|
jsonObject.insert("paramArray", paramArray);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pGroupArray->push_back(jsonObject);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::SerializeFromJson(QJsonObject* pJsonObject)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
int nGroupID = pJsonObject->value("group_id").toInt();
|
|
|
|
|
QJsonArray paramArray = pJsonObject->value("paramArray").toArray();
|
|
|
|
|
for (int i = 0; i < paramArray.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
LP_ALGORITHM_PARAM param;
|
|
|
|
|
QJsonObject jsonObject = paramArray[i].toObject();
|
|
|
|
|
|
|
|
|
|
param.nTaskID = jsonObject.value("param_src_task_id").toInt(LP_DETECTOR_INVALID_ID);
|
|
|
|
|
param.nSrcAlgoID = jsonObject.value("param_src_algo_id").toInt();
|
|
|
|
|
param.nSrcParamID = jsonObject.value("param_src_param_id").toInt();
|
|
|
|
|
param.strName = jsonObject.value("param_name").toString();
|
|
|
|
|
param.type = (AlgoParamType)jsonObject.value("param_type").toInt();
|
|
|
|
|
switch (param.type)
|
|
|
|
|
{
|
|
|
|
|
case LP_INT:
|
|
|
|
|
{
|
|
|
|
|
param.value = jsonObject.value("param_value").toInt();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_BOOLEAN:
|
|
|
|
|
{
|
|
|
|
|
param.value = jsonObject.value("param_value").toBool();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_STRING:
|
|
|
|
|
{
|
|
|
|
|
param.value = jsonObject.value("param_value").toString();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_DOUBLE:
|
|
|
|
|
{
|
|
|
|
|
param.value = jsonObject.value("param_value").toDouble();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_IMAGE:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_MAT:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case LP_ROI:
|
|
|
|
|
{
|
|
|
|
|
LP_DETECTOR_ROI_DATA roiData;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QString strExePath = QCoreApplication::applicationDirPath();
|
|
|
|
|
QString strFilePath = strExePath + LP_DETECTOR_BUSSINESS_IMAGE_DIR;
|
|
|
|
|
QString strName = QString("%1_%2").arg(QString::number(nGroupID)).arg(param.strName);
|
|
|
|
|
|
|
|
|
|
QString strFileName = strFilePath + strName + ".bmp";
|
|
|
|
|
std::string strpath = strFileName.toLocal8Bit().toStdString();
|
|
|
|
|
roiData.img = cv::imread(strpath/*strFileName.toLatin1().data()*/);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QJsonArray recordArray = jsonObject.value("param_value").toArray();
|
|
|
|
|
|
|
|
|
|
int nRecordCount = recordArray.size();
|
|
|
|
|
if (nRecordCount > 0)
|
|
|
|
|
{
|
|
|
|
|
Record_List recordList;
|
|
|
|
|
for (int i = 0; i < nRecordCount; i++)
|
|
|
|
|
{
|
|
|
|
|
QJsonArray itemArray = recordArray.at(i).toArray();
|
|
|
|
|
int nItemCount = itemArray.size();
|
|
|
|
|
if (nItemCount > 0)
|
|
|
|
|
{
|
|
|
|
|
Item_List itemList;
|
|
|
|
|
for (int j = 0; j < nItemCount; j++)
|
|
|
|
|
{
|
|
|
|
|
QJsonObject itemJson = itemArray.at(j).toObject();
|
|
|
|
|
|
|
|
|
|
Feature_List item;
|
|
|
|
|
item.first = itemJson.value("roi_item_type").toInt();
|
|
|
|
|
switch (item.first)
|
|
|
|
|
{
|
|
|
|
|
case RECTANGLE:
|
|
|
|
|
case ELLIPSE:
|
|
|
|
|
{
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value1").toDouble());
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value2").toDouble());
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value3").toDouble());
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value4").toDouble());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case CIRCLE:
|
|
|
|
|
{
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value1").toDouble());
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value2").toDouble());
|
|
|
|
|
item.second.push_back(itemJson.value("roi_item_value3").toDouble());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case POLY:
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
itemList.push_back(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
recordList.push_back(itemList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
roiData.records = recordList;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
param.value.setValue(roiData);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
param.strDescription = jsonObject.value("param_description").toString();
|
|
|
|
|
PLP_ALGORITHM_PARAM pParam = (PLP_ALGORITHM_PARAM)AddParam(¶m, nGroupID);
|
|
|
|
|
pParam->nID = jsonObject.value("param_id").toInt();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CAlgorithmShare::CleanUp()
|
|
|
|
|
{
|
|
|
|
|
QMap<int, QVector<PLP_ALGORITHM_PARAM>*>::Iterator it;
|
|
|
|
|
for (it = m_mapParamGroup.begin(); it != m_mapParamGroup.end(); ++it)
|
|
|
|
|
{
|
|
|
|
|
QVector<PLP_ALGORITHM_PARAM>* pGroup = it.value();
|
|
|
|
|
for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
iter != pGroup->end(); ++iter)
|
|
|
|
|
{
|
|
|
|
|
PLP_ALGORITHM_PARAM p = *iter;
|
|
|
|
|
if (p)
|
|
|
|
|
{
|
|
|
|
|
delete p;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pGroup->clear();
|
|
|
|
|
delete pGroup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_mapParamGroup.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::RegisterCoreCtrl(class ICoreCtrl* pCoreCtrl /* = NULL */)
|
|
|
|
|
{
|
|
|
|
|
if (!pCoreCtrl)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
m_pCoreCtrl = pCoreCtrl;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::GetIntValue(int nAlgorithm, const QString& skey, QString& value, int nDefault)
|
|
|
|
|
{
|
|
|
|
|
// IAlgorithmOption* p = m_pCoreCtrl->IGetAlgorithmOption(nAlgorithm);
|
|
|
|
|
// if (!p)
|
|
|
|
|
// return false;
|
|
|
|
|
//
|
|
|
|
|
// value = p->GetIntValue(skey, nDefault);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CAlgorithmShare::GetStringValue(int nAlgorithm, const QString& skey, QString& value, const QString& default)
|
|
|
|
|
{
|
|
|
|
|
// IAlgorithmOption* p = m_pCoreCtrl->IGetAlgorithmOption(nAlgorithm);
|
|
|
|
|
// if (!p)
|
|
|
|
|
// return false;
|
|
|
|
|
//
|
|
|
|
|
// value = p->GetStringValue(skey, default);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
//void CAlgorithmShare::SetValue(const QString& key, const QVariant& value, AlgoParamType type, int idx /* = -1 */)
|
|
|
|
|
//{
|
|
|
|
|
// LP_ALGORITHM_PARAM* p = new LP_ALGORITHM_PARAM;
|
|
|
|
|
//
|
|
|
|
|
// p->nID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
// p->nSrcAlgoID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
// p->nSrcParamID = LP_DETECTOR_INVALID_ID;
|
|
|
|
|
// p->strName = key;
|
|
|
|
|
// p->type = type;
|
|
|
|
|
// p->value = value;
|
|
|
|
|
// p->strDescription = "";
|
|
|
|
|
// p->bIsSave = false;
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup[idx];
|
|
|
|
|
// if (!p)
|
|
|
|
|
// {
|
|
|
|
|
// m_mapParamGroup.remove(idx);
|
|
|
|
|
// pGroup = new QVector < PLP_ALGORITHM_PARAM > ;
|
|
|
|
|
// m_mapParamGroup.insert(idx, pGroup);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// pGroup->push_back(p);
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//QVariant CAlgorithmShare::GetValue(const QString& key, AlgoParamType& type, int idx /* = -1 */)
|
|
|
|
|
//{
|
|
|
|
|
// QVector<PLP_ALGORITHM_PARAM>* pGroup = m_mapParamGroup[idx];
|
|
|
|
|
// if (!pGroup)
|
|
|
|
|
// return false;
|
|
|
|
|
//
|
|
|
|
|
// for (QVector<PLP_ALGORITHM_PARAM>::iterator iter = pGroup->begin();
|
|
|
|
|
// iter != pGroup->end(); ++iter)
|
|
|
|
|
// {
|
|
|
|
|
// if (NULL != *iter)
|
|
|
|
|
// {
|
|
|
|
|
// PLP_ALGORITHM_PARAM p = *iter;
|
|
|
|
|
// if (p->strName == key)
|
|
|
|
|
// {
|
|
|
|
|
// type = p->type;
|
|
|
|
|
// return p->value;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return NULL;
|
|
|
|
|
//}
|