Rev 227 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef SMCaptureWorker_H
#define SMCaptureWorker_H
#include "SMTypes.h"
#include "ProjectorOpenGL.h"
#include "Camera.h"
#include "RotationStage.h"
#include "Algorithm.h"
#include <QObject>
#include <opencv2/opencv.hpp>
enum mode {
modeIdle,
modeSMCalibrationSet,
modeFrameSequence
};
class SMCaptureWorker : public QObject{
Q_OBJECT
public:
SMCaptureWorker(): setupSuccessful(0), working(0), focusingPattern(0), projector(nullptr), camera0(nullptr), camera1(nullptr), rotationStage(nullptr), algorithm(nullptr){}
~SMCaptureWorker(){}
public slots:
void setup();
void doWork();
void rotateTo(float angle);
void acquireCalibrationSet(float angle);
void acquireCalibrationSets(std::vector<float> angles);
void acquireFrameSequence(float angle);
void acquireFrameSequences(std::vector<float> angles);
void abort();
void stopWork();
void setProjectFocusingPattern(bool _focusingPattern){focusingPattern = _focusingPattern;}
signals:
void newFrame(unsigned int camID, cv::Mat frame);
void newCalibrationSet(SMCalibrationSet frameSet);
void newFrameSequence(SMFrameSequence frameSequence);
void rotatedTo(float angle);
void busy();
void done();
void finished();
private:
void acquireFrameSequenceLDR(SMFrameSequence &frameSequence);
void acquireFrameSequenceHDR(SMFrameSequence &frameSequence);
bool setupSuccessful;
bool working;
bool focusingPattern;
int delay;
int stackingCalibration;
int stackingAcquisition;
QString codec;
std::unique_ptr<Projector> projector;
std::unique_ptr<Camera> camera0;
std::unique_ptr<Camera> camera1;
std::unique_ptr<RotationStage> rotationStage;
std::unique_ptr<Algorithm> algorithm;
};
#endif // SMCaptureWorker_H