You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
6.5 KiB
C++
218 lines
6.5 KiB
C++
#include "Raster.h"
|
|
#include "ThicknessVector.h"
|
|
#include <QDebug>
|
|
#include <QJsonObject>
|
|
#include <QJsonDocument>
|
|
#include "QFile"
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
CRaster::CRaster(QString strPath)
|
|
: m_pThickness(NULL), m_pRasSt(NULL), m_strPath(strPath)
|
|
{
|
|
m_pThickness = new ThicknessVector();
|
|
m_pRasSt = new RasterST;
|
|
m_pRasCom = new RasterCom;
|
|
readRasterJson();
|
|
m_pThickness->setRasterST(m_pRasSt);
|
|
}
|
|
|
|
|
|
CRaster::~CRaster()
|
|
{
|
|
delete m_pRasSt;
|
|
delete m_pRasCom;
|
|
delete m_pThickness;
|
|
}
|
|
|
|
void CRaster::saveDefaultParam()
|
|
{
|
|
QJsonObject jsRaster = QJsonObject();
|
|
QJsonObject Rasterobj_dev;
|
|
Rasterobj_dev.insert("beilv", QJsonValue(m_pRasSt->m_beilv));
|
|
Rasterobj_dev.insert("basehight", QJsonValue(m_pRasSt->m_baseHight));
|
|
Rasterobj_dev.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//中值
|
|
Rasterobj_dev.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize));
|
|
Rasterobj_dev.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum));
|
|
Rasterobj_dev.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv));
|
|
Rasterobj_dev.insert("basehight_bool", QJsonValue(m_pRasSt->m_bool_baseHight));
|
|
Rasterobj_dev.insert("maxsize_bool", QJsonValue(m_pRasSt->m_bool_maxsize));
|
|
Rasterobj_dev.insert("lowNum_bool", QJsonValue(m_pRasSt->m_bool_lowNum));
|
|
Rasterobj_dev.insert("mid_value_bool", QJsonValue(m_pRasSt->m_bool_mid_value));
|
|
jsRaster.insert("Raster", Rasterobj_dev);
|
|
|
|
QJsonObject Rasterobj;
|
|
Rasterobj.insert("comName", QJsonValue(m_pRasCom->m_ComName));
|
|
Rasterobj.insert("baute", QJsonValue(m_pRasCom->m_Baute));
|
|
Rasterobj.insert("useRaster", QJsonValue(m_pRasCom->m_UseRaster));
|
|
jsRaster.insert("COM", Rasterobj);
|
|
|
|
|
|
QFile saveFile(m_strPath);
|
|
saveFile.open(QIODevice::WriteOnly);
|
|
QJsonDocument saveDoc(jsRaster);
|
|
saveFile.write(saveDoc.toJson());
|
|
saveFile.close();
|
|
}
|
|
|
|
RasterST * CRaster::getRasterSt() const
|
|
{
|
|
return m_pRasSt;
|
|
}
|
|
|
|
bool CRaster::readRasterJson()
|
|
{
|
|
//!>读取调试模式信息 是否保存good的图片 是否保存bad的图片 是否使用调试模式
|
|
QFile loadFile(m_strPath);
|
|
|
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
|
qWarning("Couldn't open save file.");
|
|
saveDefaultParam();
|
|
return false;
|
|
}
|
|
QByteArray readData = loadFile.readAll();
|
|
QJsonDocument readDoc = QJsonDocument::fromJson(readData);
|
|
QJsonObject jsRaster = readDoc.object();
|
|
QJsonObject Rsaterobj = jsRaster.value("Raster").toObject();
|
|
if (!Rsaterobj.isEmpty()) {
|
|
m_pRasSt->m_beilv = Rsaterobj.value("beilv").toDouble(5.07);
|
|
m_pRasSt->m_baseHight = Rsaterobj.value("basehight").toDouble(87);
|
|
m_pRasSt->mid_value = Rsaterobj.value("mid_value").toDouble(0.8);//中值
|
|
m_pRasSt->m_maxsize = Rsaterobj.value("maxsize").toInt(10);
|
|
m_pRasSt->m_lowNum = Rsaterobj.value("lowNum").toInt(0);
|
|
m_pRasSt->m_bool_beilv = Rsaterobj.value("beilv_bool").toBool(false);
|
|
m_pRasSt->m_bool_baseHight = Rsaterobj.value("basehight_bool").toBool(false);
|
|
m_pRasSt->m_bool_maxsize = Rsaterobj.value("maxsize_bool").toBool(false);
|
|
m_pRasSt->m_bool_lowNum = Rsaterobj.value("lowNum_bool").toBool(false);
|
|
m_pRasSt->m_bool_mid_value = Rsaterobj.value("mid_value_bool").toBool(false);
|
|
}
|
|
else {
|
|
saveRasterJson(EMTYPE_RASTER);
|
|
}
|
|
QJsonObject RasterComObj = jsRaster.value("COM").toObject();
|
|
if (!RasterComObj.isEmpty()) {
|
|
m_pRasCom->m_ComName = RasterComObj.value("comName").toString();
|
|
m_pRasCom->m_Baute = RasterComObj.value("baute").toString();
|
|
m_pRasCom->m_UseRaster = RasterComObj.value("useRaster").toBool();
|
|
}
|
|
else{
|
|
saveRasterJson(EMTYPE_COM);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool CRaster::saveRasterJson(emTySaveJsonType emType)
|
|
{
|
|
QFile loadFile(m_strPath);
|
|
|
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
|
|
|
qWarning("Couldn't open save file.");
|
|
return false;
|
|
}
|
|
QByteArray readData = loadFile.readAll();
|
|
QJsonDocument readDoc = QJsonDocument::fromJson(readData);
|
|
QJsonObject jsRaster = readDoc.object();
|
|
if (jsRaster.isEmpty())
|
|
jsRaster = QJsonObject();
|
|
|
|
switch (emType)
|
|
{
|
|
case EMTYPE_RASTER:{
|
|
QJsonObject Rasterobj;
|
|
Rasterobj.insert("beilv", QJsonValue(m_pRasSt->m_beilv));
|
|
Rasterobj.insert("basehight", QJsonValue(m_pRasSt->m_baseHight));
|
|
Rasterobj.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//中值
|
|
Rasterobj.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize));
|
|
Rasterobj.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum));
|
|
Rasterobj.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv));
|
|
Rasterobj.insert("basehight_bool", QJsonValue(m_pRasSt->m_bool_baseHight));
|
|
Rasterobj.insert("maxsize_bool", QJsonValue(m_pRasSt->m_bool_maxsize));
|
|
Rasterobj.insert("lowNum_bool", QJsonValue(m_pRasSt->m_bool_lowNum));
|
|
Rasterobj.insert("mid_value_bool", QJsonValue(m_pRasSt->m_bool_mid_value));
|
|
jsRaster.insert("Raster", Rasterobj);
|
|
}
|
|
break;
|
|
case EMTYPE_COM:{
|
|
QJsonObject Rasterobj;
|
|
Rasterobj.insert("comName", QJsonValue(m_pRasCom->m_ComName));
|
|
Rasterobj.insert("baute", QJsonValue(m_pRasCom->m_Baute));
|
|
Rasterobj.insert("useRaster", QJsonValue(m_pRasCom->m_UseRaster));
|
|
jsRaster.insert("COM", Rasterobj);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
QFile saveFile(m_strPath);
|
|
saveFile.open(QIODevice::WriteOnly);
|
|
QJsonDocument saveDoc(jsRaster);
|
|
saveFile.write(saveDoc.toJson());
|
|
saveFile.close();
|
|
return true;
|
|
}
|
|
|
|
QString CRaster::getThicknessListStr()
|
|
{
|
|
QList<double> m = getThicknessList();/*显示滤波的数据*/
|
|
QString str = "thickness list: ";
|
|
for (int i = 0; i < m.size(); i++)
|
|
{
|
|
str += QString::number(m.at(i)) + " ";
|
|
}
|
|
str += "; value = " + QString::number(m_pThickness->getValue());
|
|
qDebug() << str;
|
|
return str;
|
|
}
|
|
|
|
double CRaster::getThicknessValue() const
|
|
{
|
|
//
|
|
// QList<double> m = getThicknessList();/*显示滤波的数据*/
|
|
// QString str = "thickness value list: ";
|
|
// for (int i = 0; i < m.size(); i++)
|
|
// {
|
|
// str += QString::number(m.at(i)) + " ";
|
|
// }
|
|
// str += "; value = " + QString::number(m_pThickness->getValue());
|
|
// qDebug() << str;
|
|
return m_pThickness->getValue();
|
|
}
|
|
|
|
void CRaster::addThicknessValue(double dValue)
|
|
{
|
|
double dThickness = (63 - dValue) * m_pRasSt->m_beilv*1.0;//获取光栅数据 乘以 倍率 得出遮挡的厚度
|
|
m_pThickness->addValue(dThickness + m_pRasSt->m_baseHight);
|
|
}
|
|
|
|
bool CRaster::showRasterDlg()
|
|
{
|
|
// QRasterDlg dlg;
|
|
// dlg.SetData2UI(m_pRasSt);
|
|
// dlg.setWindowTitle("光栅标定参数设置");
|
|
// dlg.setWindowIcon(QIcon(":/image/leaper"));
|
|
// if (dlg.exec() == QDialog::Accepted)
|
|
// {
|
|
// dlg.GetDataFromUI(m_pRasSt);
|
|
// saveRasterJson();
|
|
// }
|
|
return true;
|
|
}
|
|
|
|
QList<double> CRaster::getThicknessList() const
|
|
{
|
|
return m_pThickness->getList();
|
|
}
|
|
|
|
bool CRaster::setRasterSt(RasterST *m_pRaster)
|
|
{
|
|
if (m_pRasSt){
|
|
m_pRasSt = m_pRaster;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
RasterCom * CRaster::getRasterCom() const
|
|
{
|
|
return m_pRasCom;
|
|
}
|