add support for per camera bayer mode
This commit is contained in:
@ -21,6 +21,29 @@ ConfigureCameraDialog::ConfigureCameraDialog(const CameraSetup& setup, std::shar
|
||||
ui->doubleSpinBox->setValue(profileExposure_);
|
||||
setExposure(profileExposure_);
|
||||
|
||||
switch(setup.bayerMode)
|
||||
{
|
||||
case cam::Camera::BAYER_BLUE:
|
||||
ui->comboBox_bayer->setCurrentIndex(0);
|
||||
break;
|
||||
case cam::Camera::BAYER_GREEN:
|
||||
ui->comboBox_bayer->setCurrentIndex(1);
|
||||
break;
|
||||
case cam::Camera::BAYER_RED:
|
||||
ui->comboBox_bayer->setCurrentIndex(2);
|
||||
break;
|
||||
case cam::Camera::BAYER_PASSTHOUGH:
|
||||
ui->comboBox_bayer->setCurrentIndex(3);
|
||||
break;
|
||||
case cam::Camera::BAYER_DEBAYER:
|
||||
ui->comboBox_bayer->setCurrentIndex(4);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
camera_->cam()->setBayerMode(setup_.bayerMode);
|
||||
|
||||
uint64_t min, max;
|
||||
camera_->cam()->getExposureTimeLimits(min, max);
|
||||
ui->doubleSpinBox->setMaximum(max/1000000.0);
|
||||
@ -37,6 +60,7 @@ ConfigureCameraDialog::ConfigureCameraDialog(const CameraSetup& setup, std::shar
|
||||
connect(camera_.get(), &Camera::newImage, this, &ConfigureCameraDialog::gotImage);
|
||||
connect(ui->pushButtonBgShow, &QPushButton::clicked, [this](){if(setup_.bgmask.data) ui->widget_4->setImage(Camera::Image(setup_.bgmask, 0));});
|
||||
connect(ui->pushButtonDarkImageShow, &QPushButton::clicked, [this](){if(setup_.darkmap.data) ui->widget_4->setImage(Camera::Image(setup_.darkmap, 0));});
|
||||
connect(ui->comboBox_bayer, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ConfigureCameraDialog::bayerIndexChanged);
|
||||
|
||||
checkConfig();
|
||||
}
|
||||
@ -54,6 +78,32 @@ void ConfigureCameraDialog::setExposure(double value)
|
||||
qDebug()<<"set exposure to "<<value*1000000.0;
|
||||
}
|
||||
|
||||
void ConfigureCameraDialog::bayerIndexChanged(int index)
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
case 0:
|
||||
setup_.bayerMode = cam::Camera::BAYER_BLUE;
|
||||
break;
|
||||
case 1:
|
||||
setup_.bayerMode = cam::Camera::BAYER_RED;
|
||||
break;
|
||||
case 2:
|
||||
setup_.bayerMode = cam::Camera::BAYER_GREEN;
|
||||
break;
|
||||
case 3:
|
||||
setup_.bayerMode = cam::Camera::BAYER_PASSTHOUGH;
|
||||
break;
|
||||
case 4:
|
||||
setup_.bayerMode = cam::Camera::BAYER_DEBAYER;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
camera_->cam()->setBayerMode(setup_.bayerMode);
|
||||
qDebug()<<"set bayer mode to "<<setup_.bayerMode;
|
||||
}
|
||||
|
||||
void ConfigureCameraDialog::gotImage(Camera::Image img)
|
||||
{
|
||||
switch(mode_)
|
||||
@ -70,20 +120,21 @@ void ConfigureCameraDialog::gotImage(Camera::Image img)
|
||||
}
|
||||
else
|
||||
{
|
||||
mode_ = MODE_IDLE;
|
||||
if(!createMask(img.mat, setup_.bgmask, fgImage))
|
||||
QMessageBox::warning(this, "Failed", "Unable to create mask from captured images");
|
||||
else
|
||||
ui->widget_4->setImage(Camera::Image(setup_.bgmask, camera_->id()));
|
||||
fgImage.release();
|
||||
mode_ = MODE_IDLE;
|
||||
}
|
||||
break;
|
||||
case MODE_DARK_GET:
|
||||
mode_ = MODE_IDLE;
|
||||
setup_.darkmap = img.mat;
|
||||
ui->widget_4->setImage(Camera::Image(setup_.darkmap, camera_->id()));
|
||||
mode_ = MODE_IDLE;
|
||||
break;
|
||||
case MODE_REMAP_GET:
|
||||
mode_ = MODE_IDLE;
|
||||
cv::Mat masked;
|
||||
if(setup_.bgmask.data)
|
||||
img.mat.copyTo(masked, setup_.bgmask);
|
||||
@ -93,7 +144,6 @@ void ConfigureCameraDialog::gotImage(Camera::Image img)
|
||||
if(points.size() < 8)
|
||||
{
|
||||
QMessageBox::warning(this, "Failed", "Error creating map, insufficant points detected.");
|
||||
mode_ = MODE_IDLE;
|
||||
break;
|
||||
}
|
||||
RemapMap map;
|
||||
@ -104,7 +154,6 @@ void ConfigureCameraDialog::gotImage(Camera::Image img)
|
||||
for(size_t i = 0; i < points.size(); ++i)
|
||||
cv::circle(img.mat, points[i].point, img.mat.cols/50, cv::Scalar(255,255,255), img.mat.cols/200);
|
||||
ui->widget_4->setImage(Camera::Image(img.mat, camera_->id()));
|
||||
mode_ = MODE_IDLE;
|
||||
break;
|
||||
}
|
||||
checkConfig();
|
||||
|
Reference in New Issue
Block a user