add grabber for dual cam recordings

This commit is contained in:
Jan Grewe 2024-03-11 15:53:44 +01:00
parent 5a999fac54
commit e259d668ad
2 changed files with 87 additions and 0 deletions

29
dualcamgrabber.cpp Normal file
View File

@ -0,0 +1,29 @@
#include "dualcamgrabber.h"
#include <iostream>
#include <pylon/PylonIncludes.h>
void DualcamGrabber::run() {
stop_request = false;
size_t framecount = 0;
if (wrapper->isOpen()) {
Pylon::CInstantCameraArray &cameras = wrapper->getCameraArray();
wrapper->frameRate(static_cast<uint>(framerate));
wrapper->exposureTime(exposure);
wrapper->gain(gain);
cameras.StartGrabbing();
Pylon::CGrabResultPtr frame0, frame1;
while (cameras.IsGrabbing() && !stop_request) {
MyImage *img = new MyImage();
cameras.RetrieveResult( 5000, framecount % 2 == 0 ? frame0 : frame1, Pylon::TimeoutHandling_ThrowException );
img->setFrame(framecount % 2 == 0 ? frame0 : frame1);
if (framecount % 2 == 0) {
buffer0->push(img);
} else {
buffer1->push(img);
}
framecount += 1;
}
cameras.StopGrabbing();
}
}

58
dualcamgrabber.h Normal file
View File

@ -0,0 +1,58 @@
#ifndef DUALCAMGRABBER_H
#define DUALCAMGRABBER_H
#include <QObject>
#include <QThread>
#include "dualcamwrapper.h"
#include "imagebuffer.h"
class DualcamGrabber : public QThread
{
Q_OBJECT
public:
DualcamGrabber(DualcamWrapper *wrapper, ImageBuffer *buffer0, ImageBuffer * buffer1, int framerate, QObject *parent = nullptr) :
QThread(parent), wrapper(wrapper), buffer0(buffer0), buffer1(buffer1), framerate(framerate) {}
void run() override;
void stop();
int currentFramerate() {
return framerate;
}
double currentExposureTime() {
return exposure;
}
double currentGain() {
return gain;
}
private:
bool stop_request = false;
DualcamWrapper *wrapper;
ImageBuffer *buffer0, *buffer1;
int framerate;
double exposure, gain;
public slots:
void requestStop() {
stop_request=true;
}
void setFrameRate(int newFramerate) {
framerate = newFramerate;
}
void setExposureTime(double newExposureTime) {
exposure = newExposureTime;
}
void setGain(double gain_db) {
gain = gain_db;
}
signals:
void terminated();
};
#endif // DUALCAMGRABBER_H