Skip to content

Commit c22785c

Browse files
committed
creating WebARKitPattern struct see #21
1 parent be9c775 commit c22785c

File tree

3 files changed

+49
-9
lines changed

3 files changed

+49
-9
lines changed

WebARKit/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.cpp

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@ class WebARKitTracker::WebARKitTrackerImpl {
77
public:
88
WebARKitTrackerImpl()
99
: 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+
1415
~WebARKitTrackerImpl() = default;
1516

1617
void initialize(webarkit::TRACKER_TYPE trackerType, int frameWidth, int frameHeight) {
1718
setDetectorType(trackerType);
1819
if (trackerType == webarkit::TEBLID_TRACKER) {
1920
_nn_match_ratio = TEBLID_NN_MATCH_RATIO;
20-
}
21-
else if(trackerType == webarkit::AKAZE_TRACKER) {
21+
} else if (trackerType == webarkit::AKAZE_TRACKER) {
2222
_nn_match_ratio = DEFAULT_NN_MATCH_RATIO;
2323
minNumMatches = 40;
2424
} else {
@@ -27,7 +27,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
2727
}
2828
_camera->setupCamera(frameWidth, frameHeight);
2929
_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());
3131
m_distortionCoeff = cv::Mat(6, 1, CV_64FC1, _camera->getDistortionCoefficients().data());
3232
}
3333

@@ -41,6 +41,23 @@ class WebARKitTracker::WebARKitTrackerImpl {
4141
this->_featureDetector->detect(refGray, refKeyPts, trackerFeatureMask);
4242
this->_featureDescriptor->compute(refGray, refKeyPts, refDescr);
4343

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+
4461
corners[0] = cvPoint(0, 0);
4562
corners[1] = cvPoint(refCols, 0);
4663
corners[2] = cvPoint(refCols, refRows);
@@ -297,6 +314,8 @@ class WebARKitTracker::WebARKitTrackerImpl {
297314

298315
WebARKitCamera* _camera = new WebARKitCamera();
299316

317+
WebARKitPattern _pattern;
318+
300319
cv::Mat m_camMatrix;
301320
cv::Mat m_distortionCoeff;
302321

@@ -333,7 +352,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
333352
this->_featureDescriptor = cv::ORB::create(DEFAULT_MAX_FEATURES);
334353
} else if (trackerType == webarkit::TRACKER_TYPE::FREAK_TRACKER) {
335354
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);
337356
this->_featureDescriptor = cv::xfeatures2d::FREAK::create();
338357
} else if (trackerType == webarkit::TRACKER_TYPE::TEBLID_TRACKER) {
339358
this->_featureDetector = cv::ORB::create(TEBLID_MAX_FEATURES);
@@ -351,7 +370,9 @@ WebARKitTracker::WebARKitTracker(WebARKitTracker&&) = default; // copy construct
351370

352371
WebARKitTracker& WebARKitTracker::operator=(WebARKitTracker&&) = default; // move assignment operator
353372

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+
}
355376

356377
void WebARKitTracker::initTracker(uchar* refData, size_t refCols, size_t refRows) {
357378
_trackerImpl->initTracker(refData, refCols, refRows);

WebARKit/WebARKitTrackers/WebARKitOpticalTracking/include/WebARKitTrackers/WebARKitOpticalTracking/WebARKitTracker.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "WebARKitEnums.h"
55
#include <WebARKitLog.h>
66
#include <WebARKitCamera.h>
7+
#include <WebARKitPattern..h>
78
#include <opencv2/xfeatures2d.hpp>
89

910
namespace webarkit {

WebARKit/include/WebARKitPattern..h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#ifndef WEBARKITPATTERN_H
2+
#define WEBARKITPATTERN_H
3+
4+
#include <opencv2/core/core.hpp>
5+
6+
struct WebARKitPattern {
7+
cv::Size size;
8+
9+
//cv::Mat grayImg;
10+
11+
//std::vector<cv::KeyPoint> keypoints;
12+
//cv::Mat descriptors;
13+
14+
std::vector<cv::Point2f> points2d;
15+
std::vector<cv::Point3f> points3d;
16+
};
17+
18+
#endif // WEBARKITPATTERN_H

0 commit comments

Comments
 (0)