88#include < WebARKitTrackers/WebARKitOpticalTracking/WebARKitUtils.h>
99
1010namespace webarkit {
11- static int gCameraID = 0 ;
11+ // static int gCameraID = 0;
1212
1313class WebARKitTracker ::WebARKitTrackerImpl {
1414 public:
1515 WebARKitTrackerImpl ()
16- : corners(4 ), initialized(false ), output(17 , 0.0 ), _valid(false ), numMatches(0 ), _currentlyTrackedMarkers( 0 ) {
17- _featureDetectorW = WebARKitFeatureDetector ();
16+ : corners(4 ), initialized(false ), output(17 , 0.0 ), _valid(false ), numMatches(0 )
17+ {
1818 _maxNumberOfMarkersToTrack = 1 ;
19+ _featureDetectorW = WebARKitFeatureDetector ();
20+ _currentlyTrackedMarkers = 0 ;
21+ // _maxNumberOfMarkersToTrack = 1;
1922 _frameSizeX = 0 ;
2023 _frameSizeY = 0 ;
2124 _K = cv::Mat ();
@@ -57,20 +60,23 @@ class WebARKitTracker::WebARKitTrackerImpl {
5760 }
5861 }
5962
60- int loadARParam (std::string cparam_name, webarkit::TRACKER_TYPE trackerType) {
63+ int loadARParam (std::string cparam_name, webarkit::TRACKER_TYPE trackerType, size_t xsize, size_t ysize ) {
6164 // ARParam param;
6265 if (arParamLoad (cparam_name.c_str (), 1 , &m_param) < 0 ) {
6366 ARLOGe (" loadCamera(): Error loading parameter file %s for camera." , cparam_name.c_str ());
6467 return -1 ;
6568 }
66- std::cout << " param xsize: " << m_param.xsize << std::endl;
67- std::cout << " dist function version: " << m_param.dist_function_version << std::endl;
68- int cameraID = gCameraID ++;
69- cameraParams[cameraID] = m_param;
69+ // std::cout << "param xsize: " << m_param.xsize << std::endl;
70+ // std::cout << "dist function version: " << m_param.dist_function_version << std::endl;
71+ // int cameraID = gCameraID++;
72+ // cameraParams[cameraID] = m_param;
73+
74+ initialize_w (trackerType, xsize, ysize);
7075
71- initialize_w (trackerType, m_param.xsize , m_param.ysize );
76+ // initialize_w(trackerType, m_param.xsize, m_param.ysize);
7277
73- return cameraID;
78+ // return cameraID;
79+ return 1 ;
7480 }
7581
7682 void AddMarker (uchar* buff, std::string fileName, int width, int height, int uid, float scale) {
@@ -160,7 +166,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
160166 grayFrame.release ();
161167 };
162168
163- void ProcessFrameData_w (unsigned char * frame) {
169+ void ProcessFrameData_w (uchar * frame) {
164170 // Just wraps `frame` rather than copying it, i.e. `frame` must remain valid
165171 // for the duration of the call.
166172 cv::Mat newFrame (_frameSizeY, _frameSizeX, CV_8UC1, frame);
@@ -400,7 +406,8 @@ class WebARKitTracker::WebARKitTrackerImpl {
400406 return featureMask;
401407 }
402408
403- bool CanDetectNewFeatures () { return (_currentlyTrackedMarkers < _maxNumberOfMarkersToTrack); }
409+ // bool CanDetectNewFeatures() { return (_currentlyTrackedMarkers < _maxNumberOfMarkersToTrack); }
410+ bool CanDetectNewFeatures () { return true ; }
404411
405412 bool CanMatchNewFeatures (int detectedFeaturesSize) { return (detectedFeaturesSize > minRequiredDetectedFeatures); }
406413
@@ -410,6 +417,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
410417 std::vector<cv::KeyPoint> finalMatched1, finalMatched2;
411418 for (int i = 0 ; i < _trackables.size (); i++) {
412419 if (!_trackables[i]._isDetected ) {
420+ std::cout << " trackable to match" << std::endl;
413421 std::vector<std::vector<cv::DMatch>> matches =
414422 _featureDetectorW.MatchFeatures (newFrameDescriptors, _trackables[i]._descriptors );
415423 if (matches.size () > minRequiredDetectedFeatures) {
@@ -445,7 +453,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
445453
446454 HomographyInfo homoInfo = GetHomographyInliers (Points (finalMatched2), Points (finalMatched1));
447455 if (homoInfo.validHomography ) {
448- // std::cout << "New marker detected" << std::endl;
456+ std::cout << " New marker detected" << std::endl;
449457 _trackables[bestMatchIndex]._trackSelection .SelectPoints ();
450458 _trackables[bestMatchIndex]._trackSelection .SetHomography (homoInfo.homography );
451459 _trackables[bestMatchIndex]._isDetected = true ;
@@ -570,7 +578,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
570578 return testVertexPoints;
571579 }
572580
573- cv::Mat MatchTemplateToImage (cv::Mat searchImage, cv::Mat warpedTemplate) {
581+ cv::Mat MatchTemplateToImage (cv::Mat& searchImage, cv::Mat& warpedTemplate) {
574582 int result_cols = searchImage.cols - warpedTemplate.cols + 1 ;
575583 int result_rows = searchImage.rows - warpedTemplate.rows + 1 ;
576584 if (result_cols > 0 && result_rows > 0 ) {
@@ -592,7 +600,7 @@ class WebARKitTracker::WebARKitTrackerImpl {
592600 }
593601 }
594602
595- void RunTemplateMatching (cv::Mat frame, int trackableId) {
603+ void RunTemplateMatching (cv::Mat& frame, int trackableId) {
596604 // std::cout << "Starting template match" << std::endl;
597605 std::vector<cv::Point2f> finalTemplatePoints, finalTemplateMatchPoints;
598606 // Get a handle on the corresponding points from current image and the marker
@@ -677,14 +685,16 @@ class WebARKitTracker::WebARKitTrackerImpl {
677685 }
678686 }
679687
680- void BuildImagePyramid (cv::Mat frame) { cv::buildOpticalFlowPyramid (frame, _pyramid, winSize, maxLevel); }
688+ void BuildImagePyramid (cv::Mat& frame) { cv::buildOpticalFlowPyramid (frame, _pyramid, winSize, maxLevel); }
681689
682690 void SwapImagePyramid () { _pyramid.swap (_prevPyramid); }
683691
684- void ProcessFrame_w (cv::Mat frame) {
692+ void ProcessFrame_w (cv::Mat& frame) {
685693 // std::cout << "Building pyramid" << std::endl;
686694 BuildImagePyramid (frame);
687695 // std::cout << "Drawing detected markers to mask" << std::endl;
696+ std::cout << " Currently tracked markers: " << _currentlyTrackedMarkers << std::endl;
697+ std::cout << " Max n. markers 2 track: " << _maxNumberOfMarkersToTrack << std::endl;
688698 if (CanDetectNewFeatures ()) {
689699 std::cout << " Detecting new features" << std::endl;
690700 cv::Mat detectionFrame;
@@ -701,13 +711,13 @@ class WebARKitTracker::WebARKitTrackerImpl {
701711 }
702712 if (_frameCount > 0 ) {
703713 if ((_currentlyTrackedMarkers > 0 ) && (_prevPyramid.size () > 0 )) {
704- // std::cout << "Begin tracking phase" << std::endl;
714+ std::cout << " Begin tracking phase" << std::endl;
705715 for (int i = 0 ; i < _trackables.size (); i++) {
706716 if (_trackables[i]._isDetected ) {
707717 std::vector<cv::Point2f> trackablePoints = SelectTrackablePoints (i);
708718 std::vector<cv::Point2f> trackablePointsWarped =
709719 _trackables[i]._trackSelection .GetSelectedFeaturesWarped ();
710- // std::cout << "Starting Optical Flow" << std::endl;
720+ std::cout << " Starting Optical Flow" << std::endl;
711721 RunOpticalFlow (i, trackablePoints, trackablePointsWarped);
712722 if (_trackables[i]._isTracking ) {
713723 // Refine optical flow with template match.
@@ -775,8 +785,8 @@ void WebARKitTracker::initTracker(uchar* refData, size_t refCols, size_t refRows
775785 _trackerImpl->initTracker (refData, refCols, refRows);
776786}
777787
778- void WebARKitTracker::loadARParam (std::string paramName, webarkit::TRACKER_TYPE trackerType) {
779- _trackerImpl->loadARParam (paramName, trackerType);
788+ void WebARKitTracker::loadARParam (std::string paramName, webarkit::TRACKER_TYPE trackerType, size_t xsize, size_t ysize ) {
789+ _trackerImpl->loadARParam (paramName, trackerType, xsize, ysize );
780790}
781791
782792void WebARKitTracker::AddMarker (uchar* buff, std::string fileName, int width, int height, int uid, float scale) {
0 commit comments