Subversion Repositories seema-scanner

Rev

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

#ifndef CODEC_H
#define CODEC_H

#include <vector>
#include <opencv2/opencv.hpp>
#include "SMTypes.h"

enum CodingDir {CodingDirNone = 0,
               CodingDirHorizontal = 1 << 0,
               CodingDirVertical = 1 << 1,
               CodingDirBoth = CodingDirHorizontal | CodingDirVertical};

// Base class for all Algorithms
class Algorithm {
    public:
        Algorithm(unsigned int _screenCols, unsigned int _screenRows, CodingDir _dir = CodingDirHorizontal) : N(0),screenCols(_screenCols), screenRows(_screenRows),  dir(_dir){}
        unsigned int getNPatterns(){return N;}
        CodingDir getDir(){return dir;}
        // Encoding
        virtual cv::Mat getEncodingPattern(unsigned int depth) = 0;
        virtual ~Algorithm(){}
    protected:
        unsigned int N;
        unsigned int screenCols, screenRows;
        CodingDir dir;
};

class Algorithm {
    public:
        Algorithm(CodingDir _dir, int _screenCols, int _screenRows) : dir(_dir), screenCols(_screenCols), screenRows(_screenRows){}
        CodingDir getDir(){return dir;}
        int getscreenCols(){return screenCols;}
        int getscreenRows(){return screenRows;}
        // Decoding
        virtual void getCorrespondences(const std::vector<cv::Mat>& frames0, const std::vector<cv::Mat>& frames1, std::vector<cv::Point2f>& q0, std::vector<cv::Point2f>& q1, std::vector<cv::Point3f>& color) = 0;
        virtual ~Algorithm(){}
    protected:
        CodingDir dir;
        int screenCols, screenRows;
};

#endif // CODEC_H