summaryrefslogtreecommitdiffhomepage
path: root/tracker-easy/tracker-easy-api.h
blob: e5627d1188e7dcc541131bf215182ab214c0d0a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#pragma once

#include "pt-settings.hpp"

#include "cv/numeric.hpp"
#include "options/options.hpp"
#include "video/camera.hpp"

#include <tuple>
#include <type_traits>
#include <memory>

#include <opencv2/core.hpp>

#include <QImage>
#include <QString>

#ifdef __clang__
#   pragma clang diagnostic push
#   pragma clang diagnostic ignored "-Wweak-vtables"
#endif

const int KPointCount = 3;

class IPointExtractor
{
public:
    using vec2 = numeric_types::vec2;
    using f = numeric_types::f;

    virtual void extract_points(const cv::Mat& image, cv::Mat* aPreview, std::vector<vec2>& aPoints) = 0;
};

struct IEasyTrackerTraits
{
    template<typename t> using pointer = std::shared_ptr<t>;

    IEasyTrackerTraits();
    virtual ~IEasyTrackerTraits();

    virtual pointer<IPointExtractor> make_point_extractor() const = 0;
    virtual QString get_module_name() const = 0;
};

template<typename t>
using pt_pointer = typename IEasyTrackerTraits::pointer<t>;

#ifdef __clang__
#   pragma clang diagnostic pop
#endif