Subversion Repositories seema-scanner

Rev

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