@@ -7,18 +7,18 @@ class WebARKitTracker::WebARKitTrackerImpl {
7
7
public:
8
8
WebARKitTrackerImpl ()
9
9
: corners(4 ), initialized(false ), output(17 , 0.0 ), _valid(false ), _isDetected(false ), numMatches(0 ),
10
- minNumMatches (MIN_NUM_MATCHES), _nn_match_ratio(0 .7f ){
11
- m_camMatrix = cv::Mat ();
12
- m_distortionCoeff = cv::Mat ();
13
- };
10
+ minNumMatches (MIN_NUM_MATCHES), _nn_match_ratio(0 .7f ) {
11
+ m_camMatrix = cv::Mat ();
12
+ m_distortionCoeff = cv::Mat ();
13
+ };
14
+
14
15
~WebARKitTrackerImpl () = default ;
15
16
16
17
void initialize (webarkit::TRACKER_TYPE trackerType, int frameWidth, int frameHeight) {
17
18
setDetectorType (trackerType);
18
19
if (trackerType == webarkit::TEBLID_TRACKER) {
19
20
_nn_match_ratio = TEBLID_NN_MATCH_RATIO;
20
- }
21
- else if (trackerType == webarkit::AKAZE_TRACKER) {
21
+ } else if (trackerType == webarkit::AKAZE_TRACKER) {
22
22
_nn_match_ratio = DEFAULT_NN_MATCH_RATIO;
23
23
minNumMatches = 40 ;
24
24
} else {
@@ -27,7 +27,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
27
27
}
28
28
_camera->setupCamera (frameWidth, frameHeight);
29
29
_camera->printSettings ();
30
- m_camMatrix = cv::Mat (3 ,3 , CV_64FC1, _camera->getCameraData ().data ());
30
+ m_camMatrix = cv::Mat (3 , 3 , CV_64FC1, _camera->getCameraData ().data ());
31
31
m_distortionCoeff = cv::Mat (6 , 1 , CV_64FC1, _camera->getDistortionCoefficients ().data ());
32
32
}
33
33
@@ -41,6 +41,23 @@ class WebARKitTracker::WebARKitTrackerImpl {
41
41
this ->_featureDetector ->detect (refGray, refKeyPts, trackerFeatureMask);
42
42
this ->_featureDescriptor ->compute (refGray, refKeyPts, refDescr);
43
43
44
+ // Normalized dimensions :
45
+ const float maxSize = std::max (refCols, refRows);
46
+ const float unitW = refCols / maxSize;
47
+ const float unitH = refRows / maxSize;
48
+
49
+ _pattern.size = cv::Size (refCols, refRows);
50
+
51
+ _pattern.points2d [0 ] = cv::Point2f (0 , 0 );
52
+ _pattern.points2d [1 ] = cv::Point2f (refCols, 0 );
53
+ _pattern.points2d [2 ] = cv::Point2f (refCols, refRows);
54
+ _pattern.points2d [3 ] = cv::Point2f (0 , refRows);
55
+
56
+ _pattern.points3d [0 ] = cv::Point3f (-unitW, -unitH, 0 );
57
+ _pattern.points3d [1 ] = cv::Point3f (unitW, -unitH, 0 );
58
+ _pattern.points3d [2 ] = cv::Point3f (unitW, unitH, 0 );
59
+ _pattern.points3d [3 ] = cv::Point3f (-unitW, unitH, 0 );
60
+
44
61
corners[0 ] = cvPoint (0 , 0 );
45
62
corners[1 ] = cvPoint (refCols, 0 );
46
63
corners[2 ] = cvPoint (refCols, refRows);
@@ -297,6 +314,8 @@ class WebARKitTracker::WebARKitTrackerImpl {
297
314
298
315
WebARKitCamera* _camera = new WebARKitCamera();
299
316
317
+ WebARKitPattern _pattern;
318
+
300
319
cv::Mat m_camMatrix;
301
320
cv::Mat m_distortionCoeff;
302
321
@@ -333,7 +352,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
333
352
this ->_featureDescriptor = cv::ORB::create (DEFAULT_MAX_FEATURES);
334
353
} else if (trackerType == webarkit::TRACKER_TYPE::FREAK_TRACKER) {
335
354
this ->_featureDetector = cv::ORB::create (10000 );
336
- // this->_featureDetector = cv::xfeatures2d::StarDetector::create(DEFAULT_MAX_FEATURES);
355
+ // this->_featureDetector = cv::xfeatures2d::StarDetector::create(DEFAULT_MAX_FEATURES);
337
356
this ->_featureDescriptor = cv::xfeatures2d::FREAK::create ();
338
357
} else if (trackerType == webarkit::TRACKER_TYPE::TEBLID_TRACKER) {
339
358
this ->_featureDetector = cv::ORB::create (TEBLID_MAX_FEATURES);
@@ -351,7 +370,9 @@ WebARKitTracker::WebARKitTracker(WebARKitTracker&&) = default; // copy construct
351
370
352
371
WebARKitTracker& WebARKitTracker::operator =(WebARKitTracker&&) = default ; // move assignment operator
353
372
354
- void WebARKitTracker::initialize (webarkit::TRACKER_TYPE trackerType, int frameWidth, int frameHeight) { _trackerImpl->initialize (trackerType, frameWidth, frameHeight); }
373
+ void WebARKitTracker::initialize (webarkit::TRACKER_TYPE trackerType, int frameWidth, int frameHeight) {
374
+ _trackerImpl->initialize (trackerType, frameWidth, frameHeight);
375
+ }
355
376
356
377
void WebARKitTracker::initTracker (uchar* refData, size_t refCols, size_t refRows) {
357
378
_trackerImpl->initTracker (refData, refCols, refRows);
0 commit comments