add support for per camera bayer mode

This commit is contained in:
2021-06-29 18:35:59 +02:00
parent 0f1a6f1ba0
commit 635514159c
8 changed files with 193 additions and 86 deletions

View File

@ -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();

View File

@ -34,6 +34,7 @@ private slots:
void captureDark();
void takeImage();
void setExposure(double value);
void bayerIndexChanged(int index);
public slots:
void accept() override;

View File

@ -13,7 +13,7 @@
<property name="windowTitle">
<string>Configure Camera</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,0,0,0">
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,0,0,0,0">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
@ -31,6 +31,16 @@
<property name="horizontalSpacing">
<number>6</number>
</property>
<item row="1" column="4">
<widget class="QPushButton" name="pushButtonRemapClear">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="Led" name="ledBg" native="true">
<property name="sizePolicy">
@ -47,20 +57,6 @@
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="pushButtonBgCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Dark image</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QPushButton" name="pushButtonDarkImageClear">
<property name="enabled">
@ -71,73 +67,6 @@
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="pushButtonDarkImageCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QPushButton" name="pushButtonRemapClear">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Background image</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButtonDarkImageShow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Show</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Led" name="ledRemap" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonBgShow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Show</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="pushButtonRemapCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Led" name="ledDark" native="true">
<property name="sizePolicy">
@ -154,6 +83,44 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Background image</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="pushButtonBgCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="pushButtonRemapCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Dark image</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonBgShow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Show</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
@ -161,6 +128,39 @@
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="pushButtonDarkImageCreate">
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Led" name="ledRemap" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButtonDarkImageShow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Show</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QPushButton" name="pushButtonBgClear">
<property name="enabled">
@ -173,6 +173,49 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Bayer mode</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_bayer">
<item>
<property name="text">
<string>Blue</string>
</property>
</item>
<item>
<property name="text">
<string>Green</string>
</property>
</item>
<item>
<property name="text">
<string>Red</string>
</property>
</item>
<item>
<property name="text">
<string>Passthrough</string>
</property>
</item>
<item>
<property name="text">
<string>Debayer</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">