1、QMotorDoubleSlider 将细分参数和 Vince 统一,使用7代表128,并修改配置文件类的相关功能;
2、resonon nir 采集白板崩溃:重连相机解决; 3、去掉 imageViewer 的边缘黑框; 4、解决问题:当采集白板数据后,采集影像拉伸问题:硬编码的4096 → 自动计算最大值; 5、记录上次软件布局状态信息,再次打开时恢复; 6、轨迹规划界面文字居中; 7、将 groupbox 换成 dockwidget,然后再菜单栏添加 dock 的开关;
This commit is contained in:
156
HPPA/HPPA.cpp
156
HPPA/HPPA.cpp
@ -15,36 +15,46 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
{
|
{
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
|
|
||||||
|
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
||||||
|
QFile file(strPath);
|
||||||
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
|
QByteArray ba;
|
||||||
|
QDataStream in(&file);
|
||||||
|
in >> ba;
|
||||||
|
file.close();
|
||||||
|
this->restoreState(ba);
|
||||||
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
string HPPACfgFile = getPathofEXE() + "\\HPPA.cfg";
|
string HPPACfgFile = getPathofEXE() + "\\HPPA.cfg";
|
||||||
configfile.setConfigfilePath(HPPACfgFile);
|
mConfigfile.setConfigfilePath(HPPACfgFile);
|
||||||
if (!configfile.isConfigfileExist())
|
if (!mConfigfile.isConfigfileExist())
|
||||||
{
|
{
|
||||||
configfile.createConfigFile();
|
mConfigfile.createConfigFile();
|
||||||
qDebug() << "create: " << QString::fromStdString(HPPACfgFile);
|
qDebug() << "create: " << QString::fromStdString(HPPACfgFile);
|
||||||
}
|
}
|
||||||
configfile.parseConfigfile();
|
mConfigfile.parseConfigfile();
|
||||||
qDebug() << "exist: " << QString::fromStdString(HPPACfgFile);
|
qDebug() << "exist: " << QString::fromStdString(HPPACfgFile);
|
||||||
|
|
||||||
/*int max, min;
|
/*int max, min;
|
||||||
configfile.getPositionRestriction(max, min);
|
mConfigfile.getPositionRestriction(max, min);
|
||||||
|
|
||||||
string sn;
|
string sn;
|
||||||
configfile.getSN(sn);
|
mConfigfile.getSN(sn);
|
||||||
|
|
||||||
int coarse, fine;
|
int coarse, fine;
|
||||||
configfile.getTuningStepSize(coarse, fine);
|
mConfigfile.getTuningStepSize(coarse, fine);
|
||||||
float fa, fb;
|
float fa, fb;
|
||||||
configfile.getFitParams(fa, fb);
|
mConfigfile.getFitParams(fa, fb);
|
||||||
int max_FocusRange, min_FocusRange;
|
int max_FocusRange, min_FocusRange;
|
||||||
configfile.getAutoFocusRange(max_FocusRange, min_FocusRange);
|
mConfigfile.getAutoFocusRange(max_FocusRange, min_FocusRange);
|
||||||
|
|
||||||
float StepAnglemar_x, Lead_x, ScaleFactor_x;
|
float StepAnglemar_x, Lead_x, ScaleFactor_x;
|
||||||
int SubdivisionMultiples_x;
|
int SubdivisionMultiples_x;
|
||||||
configfile.getXMotorParm(StepAnglemar_x, Lead_x, SubdivisionMultiples_x, ScaleFactor_x);
|
mConfigfile.getXMotorParm(StepAnglemar_x, Lead_x, SubdivisionMultiples_x, ScaleFactor_x);
|
||||||
float StepAnglemar_y, Lead_y, ScaleFactor_y;
|
float StepAnglemar_y, Lead_y, ScaleFactor_y;
|
||||||
int SubdivisionMultiples_y;
|
int SubdivisionMultiples_y;
|
||||||
configfile.getYMotorParm(StepAnglemar_y, Lead_y, SubdivisionMultiples_y, ScaleFactor_y);*/
|
mConfigfile.getYMotorParm(StepAnglemar_y, Lead_y, SubdivisionMultiples_y, ScaleFactor_y);*/
|
||||||
|
|
||||||
//״̬<D7B4><CCAC>
|
//״̬<D7B4><CCAC>
|
||||||
xmotor_state_label1 = new QLabel();
|
xmotor_state_label1 = new QLabel();
|
||||||
@ -87,9 +97,18 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
m_chartView = new QChartView();
|
QWidget* widget = new QWidget();
|
||||||
|
QGridLayout* grid = new QGridLayout(widget);
|
||||||
|
|
||||||
|
|
||||||
|
m_chartView = new QChartView(ui.mDockWidgetSpectralViewer);
|
||||||
m_chartView->setRenderHint(QPainter::Antialiasing);
|
m_chartView->setRenderHint(QPainter::Antialiasing);
|
||||||
ui.spectral_gridLayout->addWidget(m_chartView);
|
|
||||||
|
grid->addWidget(m_chartView);
|
||||||
|
//grid->setMargin(0);
|
||||||
|
grid->setContentsMargins(0, 0, 0, 0);
|
||||||
|
//grid->SetMaximumSize(0);
|
||||||
|
ui.mDockWidgetSpectralViewer->setWidget(widget);
|
||||||
|
|
||||||
//QLineSeries *series = new QLineSeries();
|
//QLineSeries *series = new QLineSeries();
|
||||||
//QChart *chart = new QChart();
|
//QChart *chart = new QChart();
|
||||||
@ -170,7 +189,7 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
float scaleFactor;//<2F><><EFBFBD><EFBFBD>еװ<D0B5>õ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
float scaleFactor;//<2F><><EFBFBD><EFBFBD>еװ<D0B5>õ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
int subdivisionMultiples;//ϸ<><CFB8><EFBFBD><EFBFBD>
|
int subdivisionMultiples;//ϸ<><CFB8><EFBFBD><EFBFBD>
|
||||||
float maxRange;
|
float maxRange;
|
||||||
configfile.getXMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
mConfigfile.getXMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
||||||
|
|
||||||
ui.xmotor_speed_slider->setMultiplier(lead, stepAnglemar, scaleFactor, subdivisionMultiples);
|
ui.xmotor_speed_slider->setMultiplier(lead, stepAnglemar, scaleFactor, subdivisionMultiples);
|
||||||
ui.xmotor_speed_slider->setRange(0, 3);//5.2734375cm/s=10000<30><30><EFBFBD><EFBFBD>
|
ui.xmotor_speed_slider->setRange(0, 3);//5.2734375cm/s=10000<30><30><EFBFBD><EFBFBD>
|
||||||
@ -185,7 +204,7 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
ui.xmotor_location_slider->setMultiplier(lead, stepAnglemar, scaleFactor, subdivisionMultiples);
|
ui.xmotor_location_slider->setMultiplier(lead, stepAnglemar, scaleFactor, subdivisionMultiples);
|
||||||
ui.xmotor_location_slider->setValue(0);
|
ui.xmotor_location_slider->setValue(0);
|
||||||
|
|
||||||
configfile.getYMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
mConfigfile.getYMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
||||||
connect(this->ui.ymotor_location_lineEdit, SIGNAL(editingFinished()), this, SLOT(OnYmotorLocationLineeditEditingFinished()));
|
connect(this->ui.ymotor_location_lineEdit, SIGNAL(editingFinished()), this, SLOT(OnYmotorLocationLineeditEditingFinished()));
|
||||||
connect(this->ui.ymotor_location_slider, SIGNAL(valueChanged(double)), this, SLOT(OnYmotorLocationSliderChanged(double)));
|
connect(this->ui.ymotor_location_slider, SIGNAL(valueChanged(double)), this, SLOT(OnYmotorLocationSliderChanged(double)));
|
||||||
connect(this->ui.ymotor_location_slider, SIGNAL(sliderReleased()), this, SLOT(OnYmotorLocationSliderReleased()));
|
connect(this->ui.ymotor_location_slider, SIGNAL(sliderReleased()), this, SLOT(OnYmotorLocationSliderReleased()));
|
||||||
@ -283,6 +302,8 @@ HPPA::HPPA(QWidget *parent)
|
|||||||
|
|
||||||
createActionGroups();
|
createActionGroups();
|
||||||
connect(mImagerGroup, &QActionGroup::triggered, this, &HPPA::selectingImager);
|
connect(mImagerGroup, &QActionGroup::triggered, this, &HPPA::selectingImager);
|
||||||
|
|
||||||
|
initPanelToolbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HPPA::createActionGroups()
|
void HPPA::createActionGroups()
|
||||||
@ -305,6 +326,15 @@ void HPPA::selectingImager(QAction* selectedAction)
|
|||||||
|
|
||||||
HPPA::~HPPA()
|
HPPA::~HPPA()
|
||||||
{
|
{
|
||||||
|
QString strPath = QCoreApplication::applicationDirPath() + "/UILayout.ini";
|
||||||
|
QFile file(strPath);
|
||||||
|
if (file.open(QIODevice::WriteOnly)) {
|
||||||
|
QDataStream outfile(&file);
|
||||||
|
QByteArray ba = this->saveState();
|
||||||
|
outfile << ba;
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
if (m_Imager != nullptr)
|
if (m_Imager != nullptr)
|
||||||
{
|
{
|
||||||
//m_Imager->~ResononNirImager();//<2F>ͷ<EFBFBD><CDB7><EFBFBD>Դ
|
//m_Imager->~ResononNirImager();//<2F>ͷ<EFBFBD><CDB7><EFBFBD>Դ
|
||||||
@ -324,6 +354,33 @@ HPPA::~HPPA()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HPPA::initPanelToolbar()
|
||||||
|
{
|
||||||
|
tabifyDockWidget(ui.mDockWidgetSpectrometer, ui.mDockWidgetLinearStage);
|
||||||
|
tabifyDockWidget(ui.mDockWidgetLinearStage, ui.mDockWidgetPathPlanning);
|
||||||
|
tabifyDockWidget(ui.mDockWidgetPathPlanning, ui.mDockWidgetPowerControl);
|
||||||
|
tabifyDockWidget(ui.mDockWidgetPowerControl, ui.mDockWidgetAdjustTable);
|
||||||
|
|
||||||
|
mPanelMenu = new QMenu(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);//create panel menu
|
||||||
|
mPanelMenu->setObjectName(QStringLiteral("mPanelMenu"));
|
||||||
|
mToolbarMenu = new QMenu(QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);//create toolbar menu
|
||||||
|
mToolbarMenu->setObjectName(QStringLiteral("mToolbarMenu"));
|
||||||
|
|
||||||
|
ui.mWindowsMenu->addSeparator();
|
||||||
|
ui.mWindowsMenu->addMenu(mPanelMenu);
|
||||||
|
ui.mWindowsMenu->addMenu(mToolbarMenu);
|
||||||
|
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetSpectrometer->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetLinearStage->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetPathPlanning->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetPowerControl->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetAdjustTable->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetRGBCamera->toggleViewAction());
|
||||||
|
mPanelMenu->addAction(ui.mDockWidgetSimulator->toggleViewAction());
|
||||||
|
|
||||||
|
mToolbarMenu->addAction(ui.mainToolBar->toggleViewAction());
|
||||||
|
}
|
||||||
|
|
||||||
void HPPA::CalculateIntegratioinTimeRange()
|
void HPPA::CalculateIntegratioinTimeRange()
|
||||||
{
|
{
|
||||||
double range = 1 / m_Imager->getFramerate() * 1000;//<2F><><EFBFBD><EFBFBD>
|
double range = 1 / m_Imager->getFramerate() * 1000;//<2F><><EFBFBD><EFBFBD>
|
||||||
@ -919,8 +976,8 @@ void HPPA::setMotorRange()
|
|||||||
float scaleFactor;//<2F><><EFBFBD><EFBFBD>еװ<D0B5>õ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
float scaleFactor;//<2F><><EFBFBD><EFBFBD>еװ<D0B5>õ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
int subdivisionMultiples;//ϸ<><CFB8><EFBFBD><EFBFBD>
|
int subdivisionMultiples;//ϸ<><CFB8><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
configfile.getXMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, xMotorRange);
|
mConfigfile.getXMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, xMotorRange);
|
||||||
configfile.getYMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, yMotorRange);
|
mConfigfile.getYMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, yMotorRange);
|
||||||
|
|
||||||
|
|
||||||
//std::cout << "xMotorRange<67><65>" << xMotorRange << std::endl;
|
//std::cout << "xMotorRange<67><65>" << xMotorRange << std::endl;
|
||||||
@ -1224,20 +1281,22 @@ void HPPA::onAddRecordLine_btn()
|
|||||||
int currentRow = ui.recordLine_tableWidget->currentRow();
|
int currentRow = ui.recordLine_tableWidget->currentRow();
|
||||||
std::cout << "currentRow<EFBFBD><EFBFBD>" << currentRow << std::endl;
|
std::cout << "currentRow<EFBFBD><EFBFBD>" << currentRow << std::endl;
|
||||||
|
|
||||||
|
QTableWidgetItem* Item1 = new QTableWidgetItem(QString::number(currentPosOfYmotor, 10, 2));
|
||||||
|
QTableWidgetItem* Item2 = new QTableWidgetItem(QString::number(maxRangeOfXmotro, 10, 2));
|
||||||
if (currentRow == -1)//<2F><>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʱ
|
if (currentRow == -1)//<2F><>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʱ
|
||||||
{
|
{
|
||||||
int RowCount = ui.recordLine_tableWidget->rowCount();//Returns the number of rows. <20><>1<EFBFBD><31>ʼ<EFBFBD><CABC>
|
int RowCount = ui.recordLine_tableWidget->rowCount();//Returns the number of rows. <20><>1<EFBFBD><31>ʼ<EFBFBD><CABC>
|
||||||
ui.recordLine_tableWidget->insertRow(RowCount);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3>β<EFBFBD><CEB2>Ǵ<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>
|
ui.recordLine_tableWidget->insertRow(RowCount);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3>β<EFBFBD><CEB2>Ǵ<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
ui.recordLine_tableWidget->setItem(RowCount, 0, new QTableWidgetItem(QString::number(currentPosOfYmotor, 10, 2)));
|
ui.recordLine_tableWidget->setItem(RowCount, 0, Item1);
|
||||||
ui.recordLine_tableWidget->setItem(RowCount, 1, new QTableWidgetItem(QString::number(maxRangeOfXmotro, 10, 2)));
|
ui.recordLine_tableWidget->setItem(RowCount, 1, Item2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui.recordLine_tableWidget->insertRow(currentRow + 1);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3>β<EFBFBD><CEB2>Ǵ<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>
|
ui.recordLine_tableWidget->insertRow(currentRow + 1);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3>β<EFBFBD><CEB2>Ǵ<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>
|
||||||
|
|
||||||
ui.recordLine_tableWidget->setItem(currentRow + 1, 0, new QTableWidgetItem(QString::number(currentPosOfYmotor, 10, 2)));
|
ui.recordLine_tableWidget->setItem(currentRow + 1, 0, Item1);
|
||||||
ui.recordLine_tableWidget->setItem(currentRow + 1, 1, new QTableWidgetItem(QString::number(maxRangeOfXmotro, 10, 2)));
|
ui.recordLine_tableWidget->setItem(currentRow + 1, 1, Item2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1293,6 +1352,7 @@ void HPPA::onGenerateRecordLine_btn()
|
|||||||
|
|
||||||
|
|
||||||
//<2F><>tableWidget<65><74><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ɼ<EFBFBD><C9BC>ߣ<EFBFBD>
|
//<2F><>tableWidget<65><74><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ɼ<EFBFBD><C9BC>ߣ<EFBFBD>
|
||||||
|
QTableWidgetItem* tmpItem;
|
||||||
for (size_t i = 0; i < numberOfRecordLine; i++)
|
for (size_t i = 0; i < numberOfRecordLine; i++)
|
||||||
{
|
{
|
||||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||||
@ -1302,16 +1362,22 @@ void HPPA::onGenerateRecordLine_btn()
|
|||||||
//<2F><><EFBFBD><EFBFBD>yPosition
|
//<2F><><EFBFBD><EFBFBD>yPosition
|
||||||
if (tmp > threshold && i == numberOfRecordLine - 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>е<EFBFBD>yPosition
|
if (tmp > threshold && i == numberOfRecordLine - 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>е<EFBFBD>yPosition
|
||||||
{
|
{
|
||||||
ui.recordLine_tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(yMotorRange, 10, 2)));
|
tmpItem = new QTableWidgetItem(QString::number(yMotorRange, 10, 2));
|
||||||
|
tmpItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||||
|
ui.recordLine_tableWidget->setItem(i, 0, tmpItem);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double x = swath * i - i * repetitiveLength + offset;
|
double x = swath * i - i * repetitiveLength + offset;
|
||||||
ui.recordLine_tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(x, 10, 2)));
|
tmpItem = new QTableWidgetItem(QString::number(x, 10, 2));
|
||||||
|
tmpItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||||
|
ui.recordLine_tableWidget->setItem(i, 0, tmpItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>λ<EFBFBD><CEBB> <20><> ֵ<><D6B5><EFBFBD><EFBFBD>Ϊx<CEAA><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>λ<EFBFBD><CEBB> <20><> ֵ<><D6B5><EFBFBD><EFBFBD>Ϊx<CEAA><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ui.recordLine_tableWidget->setItem(i, 1, new QTableWidgetItem(QString::number(xMotorRange, 10, 2)));
|
tmpItem = new QTableWidgetItem(QString::number(xMotorRange, 10, 2));
|
||||||
|
tmpItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||||
|
ui.recordLine_tableWidget->setItem(i, 1, tmpItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1447,7 +1513,9 @@ void HPPA::onReadRecordLineFile_btn()
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++)
|
for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++)
|
||||||
{
|
{
|
||||||
ui.recordLine_tableWidget->setItem(i, j, new QTableWidgetItem(QString::number(data[i*ui.recordLine_tableWidget->columnCount() + j], 10, 2)));
|
QTableWidgetItem* tmp = new QTableWidgetItem(QString::number(data[i * ui.recordLine_tableWidget->columnCount() + j], 10, 2));
|
||||||
|
tmp->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||||
|
ui.recordLine_tableWidget->setItem(i, j, tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1706,6 +1774,9 @@ void HPPA::newMotor()
|
|||||||
connect(m_xMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
connect(m_xMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
||||||
connect(m_yMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
connect(m_yMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setMotorParamMicroscope(VinceControl*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
connect(m_xMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setXMotorParamFromCfgFile(VinceControl*)));
|
||||||
|
connect(m_yMotor, SIGNAL(newTCPConnection(VinceControl*)), this, SLOT(setYMotorParamFromCfgFile(VinceControl*)));
|
||||||
|
|
||||||
m_xConnectCount = 0;
|
m_xConnectCount = 0;
|
||||||
m_yConnectCount = 0;
|
m_yConnectCount = 0;
|
||||||
@ -1744,6 +1815,41 @@ void HPPA::setMotorParamMicroscope(VinceControl* motor)
|
|||||||
motor->GetCommonRetrun(buf);
|
motor->GetCommonRetrun(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HPPA::setXMotorParamFromCfgFile(VinceControl* motor)
|
||||||
|
{
|
||||||
|
float lead;//导程
|
||||||
|
float stepAnglemar;//步距角
|
||||||
|
float scaleFactor;//因机械装置的原因引入的缩放因子
|
||||||
|
int subdivisionMultiples;//细分数
|
||||||
|
float maxRange;
|
||||||
|
mConfigfile.getXMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
||||||
|
|
||||||
|
QString commonstr;
|
||||||
|
QByteArray buf;
|
||||||
|
|
||||||
|
commonstr = "cfg mcs=" + QString::number(subdivisionMultiples) + "\n";
|
||||||
|
std::string tmp = commonstr.toStdString();
|
||||||
|
motor->SendCommandtoMotor(commonstr, "non");
|
||||||
|
motor->GetCommonRetrun(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HPPA::setYMotorParamFromCfgFile(VinceControl* motor)
|
||||||
|
{
|
||||||
|
float lead;//导程
|
||||||
|
float stepAnglemar;//步距角
|
||||||
|
float scaleFactor;//因机械装置的原因引入的缩放因子
|
||||||
|
int subdivisionMultiples;//细分数
|
||||||
|
float maxRange;
|
||||||
|
mConfigfile.getYMotorParm(stepAnglemar, lead, subdivisionMultiples, scaleFactor, maxRange);
|
||||||
|
|
||||||
|
QString commonstr;
|
||||||
|
QByteArray buf;
|
||||||
|
|
||||||
|
commonstr = "cfg mcs=" + QString::number(subdivisionMultiples) + "\n";
|
||||||
|
motor->SendCommandtoMotor(commonstr, "non");
|
||||||
|
motor->GetCommonRetrun(buf);
|
||||||
|
}
|
||||||
|
|
||||||
void HPPA::deleteMotor()
|
void HPPA::deleteMotor()
|
||||||
{
|
{
|
||||||
disconnect(m_xMotor, SIGNAL(SendLogToCallClass(QString)), this, SLOT(OnSendLogToCallClass(QString)));
|
disconnect(m_xMotor, SIGNAL(SendLogToCallClass(QString)), this, SLOT(OnSendLogToCallClass(QString)));
|
||||||
|
@ -160,6 +160,12 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::HPPAClass ui;
|
Ui::HPPAClass ui;
|
||||||
|
|
||||||
|
QMenu* mPanelMenu = nullptr;
|
||||||
|
QMenu* mToolbarMenu = nullptr;
|
||||||
|
|
||||||
|
void initPanelToolbar();
|
||||||
|
|
||||||
QLineEdit * frame_number;
|
QLineEdit * frame_number;
|
||||||
QLineEdit * m_FilenameLineEdit;
|
QLineEdit * m_FilenameLineEdit;
|
||||||
QLabel * xmotor_state_label1;
|
QLabel * xmotor_state_label1;
|
||||||
|
3672
HPPA/HPPA.ui
3672
HPPA/HPPA.ui
File diff suppressed because it is too large
Load Diff
@ -37,6 +37,7 @@ ImageViewer::ImageViewer(QWidget* pParent) :QGraphicsView(pParent)
|
|||||||
|
|
||||||
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
setFrameShape(QFrame::NoFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageViewer::~ImageViewer()
|
ImageViewer::~ImageViewer()
|
||||||
|
@ -12,12 +12,30 @@ QMotorDoubleSlider::QMotorDoubleSlider(QWidget* pParent /*= NULL*/) :QSlider(pPa
|
|||||||
m_Multiplier = 0;
|
m_Multiplier = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMotorDoubleSlider::setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionMultiples)
|
void QMotorDoubleSlider::setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionParam)
|
||||||
{
|
{
|
||||||
//<2F><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>廻<EFBFBD><E5BBBB>Ϊ<EFBFBD><CEAA><EFBFBD>룺1<EBA3BA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(m_Multiplier)=<3D><><EFBFBD><EFBFBD>/(360/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>)<29><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>https://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html
|
//<2F><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>廻<EFBFBD><E5BBBB>Ϊ<EFBFBD><CEAA><EFBFBD>룺1<EBA3BA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(m_Multiplier)=<3D><><EFBFBD><EFBFBD>/(360/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>)<29><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>https://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html
|
||||||
//m_Multiplier(0.00054496986),//<2F>Ϻ<EFBFBD>ũ<EFBFBD><C5A9>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>0.00052734375/5=0.00010546875<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD>ȷֵΪ0.000544969862759644<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0.00054496986/5=0.000108993972<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>и<EFBFBD><EFBFBD><EFBFBD>еװ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>
|
//m_Multiplier(0.00054496986),//<2F>Ϻ<EFBFBD>ũ<EFBFBD><C5A9>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>0.00052734375/5=0.00010546875<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD>ȷֵΪ0.000544969862759644<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0.00054496986/5=0.000108993972<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>и<EFBFBD><EFBFBD><EFBFBD>еװ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>
|
||||||
//m_Multiplier(0.00054496986)//<2F>˰<EFBFBD><CBB0><EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD>
|
//m_Multiplier(0.00054496986)//<2F>˰<EFBFBD><CBB0><EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD>
|
||||||
m_Multiplier = lead / (360 / stepAnglemar * subdivisionMultiples) * scaleFactor;
|
m_Multiplier = lead / (360 / stepAnglemar * getValidSubdivision(subdivisionParam)) * scaleFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
int QMotorDoubleSlider::getValidSubdivision(int subdivisionParam)
|
||||||
|
{
|
||||||
|
if (subdivisionParam == 2)
|
||||||
|
return 4;
|
||||||
|
else if (subdivisionParam == 3)
|
||||||
|
return 8;
|
||||||
|
else if (subdivisionParam == 4)
|
||||||
|
return 16;
|
||||||
|
else if (subdivisionParam == 5)
|
||||||
|
return 32;
|
||||||
|
else if (subdivisionParam == 6)
|
||||||
|
return 64;
|
||||||
|
else if (subdivisionParam == 7)
|
||||||
|
return 128;
|
||||||
|
else if (subdivisionParam == 8)
|
||||||
|
return 256;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD>ⷢ<EFBFBD><E2B7A2>
|
//<2F><><EFBFBD>ⷢ<EFBFBD><E2B7A2>
|
||||||
|
@ -12,7 +12,8 @@ class QMotorDoubleSlider : public QSlider
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
QMotorDoubleSlider(QWidget* pParent = NULL);
|
QMotorDoubleSlider(QWidget* pParent = NULL);
|
||||||
void setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionMultiples);
|
void setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionParam);
|
||||||
|
int getValidSubdivision(int subdivisionParam);
|
||||||
|
|
||||||
double m_Multiplier;//<2F><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>廻<EFBFBD><E5BBBB>Ϊ<EFBFBD><CEAA><EFBFBD>룺1<EBA3BA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(m_Multiplier)=<3D><><EFBFBD><EFBFBD>/(360/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>)<29><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>https://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html
|
double m_Multiplier;//<2F><><EFBFBD>ݹ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>廻<EFBFBD><E5BBBB>Ϊ<EFBFBD><CEAA><EFBFBD>룺1<EBA3BA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(m_Multiplier)=<3D><><EFBFBD><EFBFBD>/(360/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>)<29><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>https://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html
|
||||||
|
|
||||||
|
@ -189,6 +189,44 @@ void ResononNirImager::focus()
|
|||||||
setIntegrationTime(tmpIntegrationTime);
|
setIntegrationTime(tmpIntegrationTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResononNirImager::record_dark()
|
||||||
|
{
|
||||||
|
std::cout << "<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||||
|
reConnectImage();
|
||||||
|
imagerStartCollect();
|
||||||
|
getFrame(dark);
|
||||||
|
imagerStopCollect();
|
||||||
|
|
||||||
|
m_HasDark = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResononNirImager::record_white()
|
||||||
|
{
|
||||||
|
std::cout << "<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ壡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
|
||||||
|
reConnectImage();
|
||||||
|
imagerStartCollect();
|
||||||
|
getFrame(white);
|
||||||
|
imagerStopCollect();
|
||||||
|
|
||||||
|
//<2F>װ<EFBFBD><D7B0>۰<EFBFBD><DBB0><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if (m_HasDark)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < m_FrameSize; i++)
|
||||||
|
{
|
||||||
|
if (white[i] < dark[i])
|
||||||
|
{
|
||||||
|
white[i] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
white[i] = white[i] - dark[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_HasWhite = true;
|
||||||
|
}
|
||||||
|
|
||||||
void ResononNirImager::start_record()
|
void ResononNirImager::start_record()
|
||||||
{
|
{
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -43,6 +43,8 @@ private:
|
|||||||
public slots:
|
public slots:
|
||||||
double auto_exposure();
|
double auto_exposure();
|
||||||
void focus();
|
void focus();
|
||||||
|
void record_dark();
|
||||||
|
void record_white();
|
||||||
void start_record();
|
void start_record();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>753</width>
|
<width>756</width>
|
||||||
<height>490</height>
|
<height>463</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -65,12 +65,12 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>270</x>
|
<x>270</x>
|
||||||
<y>150</y>
|
<y>150</y>
|
||||||
<width>108</width>
|
<width>141</width>
|
||||||
<height>24</height>
|
<height>24</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>版本:1.8</string>
|
<string>版本:1.8.1</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
|
@ -303,12 +303,12 @@ bool Configfile::createConfigFile()
|
|||||||
|
|
||||||
Setting& x_StepAnglemar = x.add("StepAnglemar", Setting::TypeFloat) = 1.8;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Setting& x_StepAnglemar = x.add("StepAnglemar", Setting::TypeFloat) = 1.8;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
Setting& x_Lead = x.add("Lead", Setting::TypeFloat) = 13.5;//<2F><><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>λ<EFBFBD><CEBB>cm
|
Setting& x_Lead = x.add("Lead", Setting::TypeFloat) = 13.5;//<2F><><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>λ<EFBFBD><CEBB>cm
|
||||||
Setting& x_SubdivisionMultiples = x.add("SubdivisionMultiples", Setting::TypeInt) = 128;//ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>
|
Setting& x_SubdivisionMultiples = x.add("SubdivisionMultiples", Setting::TypeInt) = 7;//ϸ<>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||||
Setting& x_ScaleFactor = x.add("ScaleFactor", Setting::TypeFloat) = 1.0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
Setting& x_ScaleFactor = x.add("ScaleFactor", Setting::TypeFloat) = 1.0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
Setting& x_MaxRange = x.add("MaxRange", Setting::TypeFloat) = 120.0;
|
Setting& x_MaxRange = x.add("MaxRange", Setting::TypeFloat) = 120.0;
|
||||||
Setting& y_StepAnglemar = y.add("StepAnglemar", Setting::TypeFloat) = 1.8;
|
Setting& y_StepAnglemar = y.add("StepAnglemar", Setting::TypeFloat) = 1.8;
|
||||||
Setting& y_Lead = y.add("Lead", Setting::TypeFloat) = 13.5;
|
Setting& y_Lead = y.add("Lead", Setting::TypeFloat) = 13.5;
|
||||||
Setting& y_SubdivisionMultiples = y.add("SubdivisionMultiples", Setting::TypeInt) = 128;
|
Setting& y_SubdivisionMultiples = y.add("SubdivisionMultiples", Setting::TypeInt) = 7;
|
||||||
Setting& y_ScaleFactor = y.add("ScaleFactor", Setting::TypeFloat) = 0.2;
|
Setting& y_ScaleFactor = y.add("ScaleFactor", Setting::TypeFloat) = 0.2;
|
||||||
Setting& y_MaxRange = y.add("MaxRange", Setting::TypeFloat) = 120.0;
|
Setting& y_MaxRange = y.add("MaxRange", Setting::TypeFloat) = 120.0;
|
||||||
|
|
||||||
|
@ -113,8 +113,9 @@ void CImage::FillRgbImage(unsigned short *datacube)
|
|||||||
|
|
||||||
//m_QRgbImage->save(QString::fromStdString(rgbFilePathNoStrech), "PNG");
|
//m_QRgbImage->save(QString::fromStdString(rgbFilePathNoStrech), "PNG");
|
||||||
|
|
||||||
|
//ImageProcessor imageProcessor;
|
||||||
//cv::imwrite(rgbFilePathNoStrech, *m_matRgbImage);
|
//cv::imwrite(rgbFilePathNoStrech, *m_matRgbImage);
|
||||||
//cv::imwrite(rgbFilePathStrech, CStretch(*m_matRgbImage, 0.01));
|
//cv::imwrite(rgbFilePathStrech, imageProcessor.CStretch(*m_matRgbImage, 0.02));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "QImage"
|
#include "QImage"
|
||||||
|
|
||||||
#include "fileOperation.h"
|
#include "fileOperation.h"
|
||||||
|
#include "imageProcessor.h"
|
||||||
|
|
||||||
|
|
||||||
class CImage :public QObject
|
class CImage :public QObject
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "imageProcessor.h"
|
#include "imageProcessor.h"
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
ImageProcessor::ImageProcessor()
|
ImageProcessor::ImageProcessor()
|
||||||
{
|
{
|
||||||
@ -14,8 +15,9 @@ std::vector<cv::Point2f> ImageProcessor::CHistogram(const cv::Mat img)
|
|||||||
cv::Mat mimg = img.clone();
|
cv::Mat mimg = img.clone();
|
||||||
int rows = mimg.rows;
|
int rows = mimg.rows;
|
||||||
int cols = mimg.cols;
|
int cols = mimg.cols;
|
||||||
|
int maxValue = *std::max_element(mimg.begin<unsigned short>(), mimg.end<unsigned short>());
|
||||||
//ͳ<><CDB3>ÿ<EFBFBD><C3BF><EFBFBD>Ҷȳ<D2B6><C8B3>ֵĴ<D6B5><C4B4><EFBFBD>
|
//ͳ<><CDB3>ÿ<EFBFBD><C3BF><EFBFBD>Ҷȳ<D2B6><C8B3>ֵĴ<D6B5><C4B4><EFBFBD>
|
||||||
std::vector<long int> hisnum(4096, 0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
std::vector<long int> hisnum(maxValue, 0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
for (int i(0); i < rows; ++i)
|
for (int i(0); i < rows; ++i)
|
||||||
{
|
{
|
||||||
//std::cout << "i<><69>" << i << std::endl;
|
//std::cout << "i<><69>" << i << std::endl;
|
||||||
@ -27,7 +29,7 @@ std::vector<cv::Point2f> ImageProcessor::CHistogram(const cv::Mat img)
|
|||||||
|
|
||||||
//<2F>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD>ڿ۳<DABF><DBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
|
//<2F>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD>ڿ۳<DABF><DBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>Ϊ<EFBFBD><CEAA>ֵ
|
||||||
//<2F><><EFBFBD><EFBFBD>mat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪCV_16UC3<43><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ65535
|
//<2F><><EFBFBD><EFBFBD>mat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪCV_16UC3<43><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ65535
|
||||||
if (gv >= 4096)
|
if (gv >= maxValue)
|
||||||
{
|
{
|
||||||
++hisnum[0];
|
++hisnum[0];
|
||||||
}
|
}
|
||||||
@ -35,8 +37,6 @@ std::vector<cv::Point2f> ImageProcessor::CHistogram(const cv::Mat img)
|
|||||||
{
|
{
|
||||||
++hisnum[gv];
|
++hisnum[gv];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>Ƶ<EFBFBD><C6B5>
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>Ƶ<EFBFBD><C6B5>
|
||||||
|
Reference in New Issue
Block a user