From b3605aa88a8c9512fb32be3110d530b2adf7927c Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Fri, 20 Nov 2020 09:58:59 +0100 Subject: [PATCH] support setting detector gain --- grabber.cpp | 1 + grabber.h | 10 ++++++++-- pylonrecorder.cpp | 6 +++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/grabber.cpp b/grabber.cpp index 59fa903..295fb83 100644 --- a/grabber.cpp +++ b/grabber.cpp @@ -8,6 +8,7 @@ void Grabber::run() { if (camera->isOpen()) { camera->frameRate(static_cast(framerate)); camera->exposureTime(exposure); + camera->gain(gain); Pylon::CGrabResultPtr frame; Pylon::CInstantCamera *cam = camera->getCamera(); cam->StartGrabbing(); diff --git a/grabber.h b/grabber.h index cbc0ec3..6c8c37a 100644 --- a/grabber.h +++ b/grabber.h @@ -23,12 +23,16 @@ public: return exposure; } + double currentGain() { + return gain; + } + private: bool stop_request = false; PylonWrapper *camera; ImageBuffer *buffer; int framerate; - double exposure; + double exposure, gain; public slots: void requestStop() { @@ -40,7 +44,9 @@ public slots: void setExposureTime(double newExposureTime) { exposure = newExposureTime; } - + void setGain(double gain_db) { + gain = gain_db; + } signals: void terminated(); }; diff --git a/pylonrecorder.cpp b/pylonrecorder.cpp index 0d93213..796fb46 100644 --- a/pylonrecorder.cpp +++ b/pylonrecorder.cpp @@ -502,11 +502,13 @@ void PylonRecorder::disconnectCamera() { void PylonRecorder::startRecording() { std::string filename = createFilename(); fileLabel->setText(QString::fromStdString(filename)); + ImageSettings settings = pylon->getImageSettings(); + VideoSpecs specs; specs.fps = framerateSpinner->value(); specs.filename = filename; specs.exposureTime = static_cast(exposureSpinner->value()); - ImageSettings settings = pylon->getImageSettings(); + specs.detectorGain = static_cast(gainSpinner->value()); specs.width = static_cast(settings.width); specs.height= static_cast(settings.height); specs.pixelType = settings.pixelType; @@ -520,6 +522,8 @@ void PylonRecorder::startRecording() { grabber->setFrameRate(framerateSpinner->value()); if (exposureSpinner->value() != int(grabber->currentExposureTime())) grabber->setExposureTime(static_cast(exposureSpinner->value())); + if (gainSpinner->value() != int(grabber->currentGain())) + grabber->setGain(static_cast(gainSpinner->value())); writer->setVideoSpecs(specs); buffer->clear(); grabber->start();