Subversion Repositories seema-scanner

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

#ifndef MVCalibrationData_H
#define MVCalibrationData_H

#include <QString>
#include <QMetaType>

#include <opencv2/core/core.hpp>

class MVCalibrationData{
    public:
        MVCalibrationData() : K0(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), k0(0.0), cam0_error(0.0),
                              K1(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), k1(0.0), cam1_error(0.0),
                              R1(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), T1(0.0), stereo_error(0.0),
                              E(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0),
                              F(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0){}

        MVCalibrationData(cv::Matx33f _K0, cv::Vec<float, 5> _k0, double _cam0_error, cv::Matx33f _K1, cv::Vec<float, 5> _k1, double _cam1_error, cv::Matx33f _R1, cv::Vec3f _T1, double _stereo_error) :
                        K0(_K0), k0(_k0), cam0_error(_cam0_error), K1(_K1), k1(_k1), cam1_error(_cam1_error), R1(_R1), T1(_T1), stereo_error(_stereo_error){}

        bool load(const QString& filename);
        bool save(const QString& filename);
        void print(std::ostream &stream);

        friend QDataStream& operator<<(QDataStream& in, MVCalibrationData& data);
        friend QDataStream& operator<<(QDataStream& out, const MVCalibrationData& data);

        // Members publically accessible
        cv::Matx33f K0; // intrinsic camera matrix
        cv::Vec<float, 5> k0; // Camera distortion coefficients
        double cam0_error;

        cv::Matx33f K1; // outtroutsic projector matrix
        cv::Vec<float, 5> k1; // Projector distortion coefficients
        double cam1_error;

        cv::Matx33f R1; // Extrinsic rotation matrix
        cv::Vec3f   T1; // Extrinsic translation vector

        double stereo_error;

        cv::Matx33f E; // Essential matrix
        cv::Matx33f F; // Fundamental matrix

        std::string calibrationDateTime;
};

Q_DECLARE_METATYPE(MVCalibrationData)

// QDataStream ops for qDebug() and QSettings
QDataStream& operator<<(QDataStream& in, MVCalibrationData& data);
QDataStream& operator<<(QDataStream& out, const MVCalibrationData& data);

#endif