1、暗电流/白板都是550帧平均,采集白板时电机会运动;
2、文件名后加bil后缀;
3、航迹规划小数点从2位改为5位;
This commit is contained in:
tangchao0503
2025-02-07 16:25:21 +08:00
parent 0e46470402
commit 380e8042d9
7 changed files with 137 additions and 11 deletions

View File

@ -1662,6 +1662,10 @@ void HPPA::onconnect()
connect(this->ui.action_start_recording, SIGNAL(triggered()), this, SLOT(onStartRecordStep1())); connect(this->ui.action_start_recording, SIGNAL(triggered()), this, SLOT(onStartRecordStep1()));
connect(this, SIGNAL(StartLoopSignal()), m_ForLoopControl, SLOT(startLoop())); connect(this, SIGNAL(StartLoopSignal()), m_ForLoopControl, SLOT(startLoop()));
connect(this, SIGNAL(StartRecordSignal()), m_Imager, SLOT(start_record())); connect(this, SIGNAL(StartRecordSignal()), m_Imager, SLOT(start_record()));
connect(this, SIGNAL(RecordWhiteSignal()), m_Imager, SLOT(record_white()));
connect(this, SIGNAL(RecordDarlSignal()), m_Imager, SLOT(record_dark()));
connect(m_Imager, SIGNAL(RecordWhiteFinishSignal()), this, SLOT(recordWhiteFinish()));
connect(m_Imager, SIGNAL(RecordDarlFinishSignal()), this, SLOT(recordDarkFinish()));
connect(this->ui.actionOpenDirectory, SIGNAL(triggered()), this, SLOT(onActionOpenDirectory())); connect(this->ui.actionOpenDirectory, SIGNAL(triggered()), this, SLOT(onActionOpenDirectory()));
@ -1789,8 +1793,12 @@ void HPPA::onDark()
QMessageBox msgBox; QMessageBox msgBox;
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ǹ<EFBFBD><EFBFBD>ϣ<EFBFBD>")); msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ǹ<EFBFBD><EFBFBD>ϣ<EFBFBD>"));
msgBox.exec(); msgBox.exec();
m_Imager->record_dark();
emit RecordDarlSignal();
}
void HPPA::recordDarkFinish()
{
ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
} }
@ -1799,9 +1807,32 @@ void HPPA::onReference()
QMessageBox msgBox; QMessageBox msgBox;
msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>")); msgBox.setText(QString::fromLocal8Bit("<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>"));
msgBox.exec(); msgBox.exec();
m_Imager->record_white();
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
if (!isMotorConnected(m_xMotor))
{
m_xMotor->EnableMotro();
m_lXmotorLocationOfStartRecord = m_xMotor->GetLocationNow();
m_xMotor->SettingSpeed(ui.xmotor_speed_slider->OriginalValue());
//m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
m_xMotor->MoveMotar(true);
}
emit RecordWhiteSignal();
}
void HPPA::recordWhiteFinish()
{
ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
//<2F>ƶ<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>
if (!isMotorConnected(m_xMotor))
{
//x<><78><EFBFBD><EFBFBD>زɼ<D8B2>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
m_xMotor->SettingSpeed(m_lManualSpeedOfXMotor);
m_xMotor->MoveToLocation(m_lXmotorLocationOfStartRecord);
}
} }
void HPPA::onPlotHyperspectralImageRgbImage() void HPPA::onPlotHyperspectralImageRgbImage()

View File

@ -256,7 +256,9 @@ public Q_SLOTS:
void onFocus2(int command); void onFocus2(int command);
void onAbout(); void onAbout();
void onDark(); void onDark();
void recordDarkFinish();
void onReference(); void onReference();
void recordWhiteFinish();
void onStartRecordStep1(); void onStartRecordStep1();
void onStartRecordStep2(int lineNumber); void onStartRecordStep2(int lineNumber);
void onCreateTab(int trackNumber); void onCreateTab(int trackNumber);
@ -336,5 +338,7 @@ signals:
void StartRecordSignal(); void StartRecordSignal();
void CopyFileThreadSignal(QString, QString); void CopyFileThreadSignal(QString, QString);
void RecordWhiteSignal();
void RecordDarlSignal();
}; };

View File

@ -111,17 +111,59 @@ void ImagerOperationBase::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; 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;
imagerStartCollect(); imagerStartCollect();
getFrame(dark);
unsigned int* dark_tmp = new unsigned int[m_FrameSize];
std::fill(dark_tmp, dark_tmp + m_FrameSize, 0);
int counter = 50;
for (size_t i = 0; i < counter; i++)
{
getFrame(dark);
for (size_t j = 0; j < m_FrameSize; j++)
{
dark_tmp[j] = dark[j] + dark_tmp[j];
}
}
for (size_t j = 0; j < m_FrameSize; j++)
{
dark[j] = (unsigned short)(dark_tmp[j] / counter);
}
delete[] dark_tmp;
imagerStopCollect(); imagerStopCollect();
m_HasDark = true; m_HasDark = true;
emit RecordDarlFinishSignal();
} }
void ImagerOperationBase::record_white() void ImagerOperationBase::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; std::cout << "<EFBFBD>ɼ<EFBFBD><EFBFBD>װ壡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
imagerStartCollect(); imagerStartCollect();
getFrame(white);
unsigned int* white_tmp = new unsigned int[m_FrameSize];
std::fill(white_tmp, white_tmp + m_FrameSize, 0);
int counter = 50;
for (size_t i = 0; i < counter; i++)
{
getFrame(white);
for (size_t j = 0; j < m_FrameSize; j++)
{
white_tmp[j] = white[j] + white_tmp[j];
}
}
for (size_t j = 0; j < m_FrameSize; j++)
{
white[j] = (unsigned short)(white_tmp[j] / counter);
}
delete[] white_tmp;
imagerStopCollect(); imagerStopCollect();
//<2F>װ<EFBFBD><D7B0>۰<EFBFBD><DBB0><EFBFBD><EFBFBD><EFBFBD> //<2F>װ<EFBFBD><D7B0>۰<EFBFBD><DBB0><EFBFBD><EFBFBD><EFBFBD>
@ -141,6 +183,8 @@ void ImagerOperationBase::record_white()
} }
m_HasWhite = true; m_HasWhite = true;
emit RecordWhiteFinishSignal();
} }
void ImagerOperationBase::start_record() void ImagerOperationBase::start_record()

View File

@ -97,6 +97,9 @@ signals:
void RecordFinishedSignal_WhenFrameNumberNotMeet();//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD>Ҫ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>m_iFrameNumber<65><72>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>;ֹͣ<CDA3>ɼ<EFBFBD> void RecordFinishedSignal_WhenFrameNumberNotMeet();//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD>Ҫ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>m_iFrameNumber<65><72>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>;ֹͣ<CDA3>ɼ<EFBFBD>
void SpectralSignal(int);//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD> void SpectralSignal(int);//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
void RecordWhiteFinishSignal();
void RecordDarlFinishSignal();
void testImagerStatus();//<2F><>ʾ<EFBFBD><CABE><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> void testImagerStatus();//<2F><>ʾ<EFBFBD><CABE><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}; };

View File

@ -294,7 +294,7 @@ void PathPlan::onReadRecordLineFile_btn()
{ {
for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++) for (size_t j = 0; j < ui.recordLine_tableWidget->columnCount(); j++)
{ {
QTableWidgetItem* tmp = 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, 5));
tmp->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); tmp->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui.recordLine_tableWidget->setItem(i, j, tmp); ui.recordLine_tableWidget->setItem(i, j, tmp);
} }

View File

@ -191,18 +191,60 @@ 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; 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(); reConnectImage();
imagerStartCollect(); imagerStartCollect();
getFrame(dark);
unsigned int* dark_tmp = new unsigned int[m_FrameSize];
std::fill(dark_tmp, dark_tmp + m_FrameSize, 0);
int counter = 50;
for (size_t i = 0; i < counter; i++)
{
getFrame(dark);
for (size_t j = 0; j < m_FrameSize; j++)
{
dark_tmp[j] = dark[j] + dark_tmp[j];
}
}
for (size_t j = 0; j < m_FrameSize; j++)
{
dark[j] = (unsigned short)(dark_tmp[j] / counter);
}
delete[] dark_tmp;
imagerStopCollect(); imagerStopCollect();
m_HasDark = true; m_HasDark = true;
emit RecordDarlFinishSignal();
} }
void ResononNirImager::record_white() 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; std::cout << "<EFBFBD>ɼ<EFBFBD><EFBFBD>װ壡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << std::endl;
reConnectImage(); reConnectImage();
imagerStartCollect(); imagerStartCollect();
getFrame(white);
unsigned int* white_tmp = new unsigned int[m_FrameSize];
std::fill(white_tmp, white_tmp + m_FrameSize, 0);
int counter = 50;
for (size_t i = 0; i < counter; i++)
{
getFrame(white);
for (size_t j = 0; j < m_FrameSize; j++)
{
white_tmp[j] = white[j] + white_tmp[j];
}
}
for (size_t j = 0; j < m_FrameSize; j++)
{
white[j] = (unsigned short)(white_tmp[j] / counter);
}
delete[] white_tmp;
imagerStopCollect(); imagerStopCollect();
//<2F>װ<EFBFBD><D7B0>۰<EFBFBD><DBB0><EFBFBD><EFBFBD><EFBFBD> //<2F>װ<EFBFBD><D7B0>۰<EFBFBD><DBB0><EFBFBD><EFBFBD><EFBFBD>
@ -222,6 +264,8 @@ void ResononNirImager::record_white()
} }
m_HasWhite = true; m_HasWhite = true;
emit RecordWhiteFinishSignal();
} }
void ResononNirImager::start_record() void ResononNirImager::start_record()
@ -243,7 +287,7 @@ void ResononNirImager::start_record()
FileOperation* fileOperation = new FileOperation(); FileOperation* fileOperation = new FileOperation();
string directory = fileOperation->getDirectoryFromString(); string directory = fileOperation->getDirectoryFromString();
string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter); string imgPath = directory + "\\" + m_FileName2Save + "_" + std::to_string(m_FileSavedCounter)+".bil";
FILE* m_fImage = fopen(imgPath.c_str(), "w+b"); FILE* m_fImage = fopen(imgPath.c_str(), "w+b");

View File

@ -70,7 +70,7 @@
</rect> </rect>
</property> </property>
<property name="text"> <property name="text">
<string>版本1.8.1</string> <string>版本1.8.2</string>
</property> </property>
</widget> </widget>
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">