ARX  1.2.0
The next-generation open source augmented reality toolkit.
Loading...
Searching...
No Matches
PlanarTracker.h
Go to the documentation of this file.
1/*
2 * PlanarTracker.h
3 * artoolkitX
4 *
5 * This file is part of artoolkitX.
6 *
7 * artoolkitX is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * artoolkitX is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with artoolkitX. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * As a special exception, the copyright holders of this library give you
21 * permission to link this library with independent modules to produce an
22 * executable, regardless of the license terms of these independent modules, and to
23 * copy and distribute the resulting executable under terms of your choice,
24 * provided that you also meet, for each linked independent module, the terms and
25 * conditions of the license of that module. An independent module is a module
26 * which is neither derived from nor based on this library. If you modify this
27 * library, you may extend this exception to your version of the library, but you
28 * are not obligated to do so. If you do not wish to do so, delete this exception
29 * statement from your version.
30 *
31 * Copyright 2018 Realmax, Inc.
32 * Copyright 2015 Daqri, LLC.
33 * Copyright 2010-2015 ARToolworks, Inc.
34 *
35 * Author(s): Philip Lamb, Daniel Bell.
36 *
37 */
38
39#ifndef PLANAR_TRACKER_H
40#define PLANAR_TRACKER_H
41#include <memory>
42#include <string>
43#include <sstream>
44#include <iostream>
45#include <vector>
46#include <ARX/AR/ar.h> // ARdouble, ARLOG
48{
49public:
50 std::shared_ptr<unsigned char> imageData;
51 int uid;
52 float scale;
53 int width;
54 int height;
55 std::string fileName;
56};
57
59{
60public:
65
70 void Initialise(ARParam cParam);
71
77 void ProcessFrameData(unsigned char * frame);
78
79 void RemoveAllMarkers();
80 void AddMarker(std::shared_ptr<unsigned char> buff, std::string fileName, int width, int height, int uid, float scale);
81 void AddMarker(std::string imageName, int uid, float scale);
82
85 bool GetTrackablePose(int trackableId, float transMat[3][4]);
86
87 bool IsTrackableVisible(int trackableId);
88 bool LoadTrackableDatabase(std::string fileName);
89 bool SaveTrackableDatabase(std::string fileName);
90
91 bool ChangeImageId(int prevId, int newId);
92 std::vector<int> GetImageIds();
94
97 Akaze,
98 ORB,
99 Brisk,
100 Kaze,
101 SIFT
102 };
103 void SetFeatureDetector(FeatureDetectorType detectorType);
105 void SetMinRequiredDetectedFeatures(int num);
107 void SetHomographyEstimationRANSACThreshold(double thresh);
109
110 void SetMaximumNumberOfMarkersToTrack(int maximumNumberOfMarkersToTrack);
112
113 void SetTrackerVisualizationActive(bool active);
114 void *GetTrackerVisualization(void);
115
116private:
117 class PlanarTrackerImpl;
118 std::shared_ptr<PlanarTrackerImpl> _trackerImpl;
119
120};
121#endif
artoolkitX core routines.
void AddMarker(std::string imageName, int uid, float scale)
TrackedImageInfo GetTrackableImageInfo(int trackableId)
Definition PlanarTracker.cpp:917
void RemoveAllMarkers()
Definition PlanarTracker.cpp:879
void SetFeatureDetector(FeatureDetectorType detectorType)
Definition PlanarTracker.cpp:922
bool SaveTrackableDatabase(std::string fileName)
Definition PlanarTracker.cpp:903
void SetMinRequiredDetectedFeatures(int num)
Definition PlanarTracker.cpp:932
bool LoadTrackableDatabase(std::string fileName)
Definition PlanarTracker.cpp:899
int GetMinRequiredDetectedFeatures(void)
Definition PlanarTracker.cpp:937
void AddMarker(std::shared_ptr< unsigned char > buff, std::string fileName, int width, int height, int uid, float scale)
Definition PlanarTracker.cpp:884
void SetTrackerVisualizationActive(bool active)
Definition PlanarTracker.cpp:962
PlanarTracker & operator=(PlanarTracker &&)
void ProcessFrameData(unsigned char *frame)
Perform tracking on a single frame of video.
Definition PlanarTracker.cpp:874
double GetHomographyEstimationRANSACThreshold(void)
Definition PlanarTracker.cpp:947
FeatureDetectorType
Defaults to defaultDetectorType.
Definition PlanarTracker.h:96
FeatureDetectorType GetFeatureDetector(void)
Definition PlanarTracker.cpp:927
PlanarTracker()
Definition PlanarTracker.cpp:861
void Initialise(ARParam cParam)
Initialise the tracker with the supplied camera parameters.
Definition PlanarTracker.cpp:869
bool ChangeImageId(int prevId, int newId)
Definition PlanarTracker.cpp:908
void SetHomographyEstimationRANSACThreshold(double thresh)
Definition PlanarTracker.cpp:942
int GetMaximumNumberOfMarkersToTrack(void)
Definition PlanarTracker.cpp:957
PlanarTracker(PlanarTracker &&)
std::vector< int > GetImageIds()
Definition PlanarTracker.cpp:912
void * GetTrackerVisualization(void)
Definition PlanarTracker.cpp:970
void SetMaximumNumberOfMarkersToTrack(int maximumNumberOfMarkersToTrack)
Definition PlanarTracker.cpp:952
bool GetTrackablePose(int trackableId, float transMat[3][4])
If trackable is not visible, returns false, otherwise retrieves pose of trackable into transMat and r...
Definition PlanarTracker.cpp:889
bool IsTrackableVisible(int trackableId)
Definition PlanarTracker.cpp:894
Definition PlanarTracker.h:48
int uid
Definition PlanarTracker.h:51
std::string fileName
Definition PlanarTracker.h:55
float scale
Definition PlanarTracker.h:52
int height
Definition PlanarTracker.h:54
std::shared_ptr< unsigned char > imageData
Definition PlanarTracker.h:50
int width
Definition PlanarTracker.h:53
Structure holding camera parameters, including image size, projection matrix and lens distortion para...
Definition param.h:99