void MarkerDetector::processFrame(const cv::Mat& frame) { m_markers.clear(); findMarkers(frame, m_markers); }
void MarkerDetector::processFrame(const BGRAVideoFrame& frame) { std::vector<Marker> markers; findMarkers(frame, markers); m_transformations.clear(); for (size_t i=0; i<markers.size(); i++) { m_transformations.push_back(markers[i].transformation); } }
void ofxAruco::findBoards(ofPixels & pixels){ findMarkers(pixels); for (int i = 0; i < boardConfigs.size(); i++) { aruco::BoardConfiguration boardConfig = boardConfigs[i]; aruco::Board board = boards[i]; boardProbabilities[i] = boardDetector.detect(backMarkers,boardConfig,board,camParams,markerSize); // boardDetector.detect(backMarkers, boardConfig, board); } if(threaded){ lock(); foundBoard = true; unlock(); } }
void ofxAruco::detectMarkers(ofPixels & pixels){ if(!threaded){ findMarkers(pixels); }else{ lock(); frontPixels = pixels; newDetectMarkers = true; if(foundMarkers){ swap(markers,intraMarkers); foundMarkers = false; } condition.signal(); unlock(); } }
void MarkerDetector::findMarkers( cv::Mat& src, std::vector<Marker>& markers, bool draw_markers) { std::vector<Marker> loc_markers; findMarkers(src, loc_markers); _transformations.clear(); for (size_t i=0; i<loc_markers.size(); i++) { _transformations.push_back(loc_markers[i].transformation); } markers = loc_markers; if(draw_markers) drawMarkers(src, loc_markers); }
void ofxAruco::threadedFunction(){ while(isThreadRunning()){ lock(); if(!newDetectBoard && !newDetectMarkers) condition.wait(mutex); bool detectMarkers = false; bool detectBoard = false; if(newDetectMarkers || newDetectBoard){ swap(frontPixels, backPixels); detectMarkers = newDetectMarkers; detectBoard = newDetectBoard; newDetectMarkers = false; newDetectBoard = false; } unlock(); if(detectMarkers){ findMarkers(backPixels); } if(detectBoard){ findBoards(backPixels); } } }
int main(int argc, char **argv) { int one = 1; glutInit(&one,argv); init(); cur_filename = argv[1]; fprintf(stderr,"%d %s,\n", argc, cur_filename); fprintf(stdout,"%s,\t",cur_filename); if (argc > 2) { fprintf(stderr,"showing graphics\n"); singleLoop = 0; } //// dataPtr = loadImage(cur_filename); /// ARParam wparam; /* open the video path */ //if( arVideoOpen( vconf ) < 0 ) exit(0); /* find the size of the window */ //if( arVideoInqSize(&xsize, &ysize) < 0 ) exit(0); //fprintf(stderr,"Image size (x,y) = (%d,%d)\n", xsize, image->rows); /* set the initial camera parameters */ if( arParamLoad(cparam_name, 1, &wparam) < 0 ) { fprintf(stderr,"Camera parameter load error !!\n"); exit(0); } arParamChangeSize( &wparam, xsize, ysize, &cparam ); arInitCparam( &cparam ); //fprintf(stderr,"*** Camera Parameter ***\n"); //arParamDisp( &cparam ); if( (patt_id=arLoadPatt(patt_name)) < 0 ) { fprintf(stderr,"pattern load error !!\n"); exit(0); } #if 0 fprintf(stderr,"xysize %d %d\n\ cparam %g\t%g\t%g\t%g\n \ mat\n \ %g\t%g\t%g\t%g\n \ %g\t%g\t%g\t%g\n \ %g\t%g\t%g\t%g\n", cparam.xsize, cparam.ysize, cparam.dist_factor[0], cparam.dist_factor[1], cparam.dist_factor[2], cparam.dist_factor[3], cparam.mat[0][0], cparam.mat[0][1], cparam.mat[0][2], cparam.mat[0][3], cparam.mat[1][0], cparam.mat[1][1], cparam.mat[1][2], cparam.mat[1][3], cparam.mat[2][0], cparam.mat[2][1], cparam.mat[2][2], cparam.mat[2][3] ); #endif /* open the graphics window */ argInit( &cparam, 1.0, 0, 0, 0, 0 ); /// //arVideoCapStart(); findMarkers(); if (singleLoop) { //mainLoop(); } else { argMainLoop( NULL, NULL /*keyEvent*/, mainLoop ); } }
int main(int argc, char **argv) { ARUint8 *dataPtr; // // Camera configuration. // #ifdef _WIN32 char *vconf = "Data\\WDM_camera_flipV.xml"; #else char *vconf = ""; #endif int count = 0; // char *cparam_name = "../calib_camera2/newparam.dat"; char path[100]; char cparam_name[100]; char* cur_filename; if (argc < 2) { fprintf(stderr,"provide a jpeg file name\n"); return; } int one = 1; //glutInit(&one,argv); cur_filename = argv[1]; frame_ind = atoi(argv[3]); if (argc > 2) { sprintf(path,"%s/", argv[2]); } else { sprintf(path, ""); } fprintf(stderr,"%d %s,\n", argc, cur_filename); /// make this get an image with curl dataPtr = loadImage(cur_filename,&xsize,&ysize); ARParam wparam; sprintf(cparam_name,"%s%s",path,"camera_para.dat"); fprintf(stderr,"%s\n", cparam_name); /* set the initial camera parameters */ if( arParamLoad(cparam_name, 1, &wparam) < 0 ) { //if( arParamLoad("camera_para.dat", 1, &wparam) < 0 ) { fprintf(stderr,"Camera parameter load error !!\n"); exit(0); } arParamChangeSize( &wparam, xsize, ysize, &cparam ); arInitCparam( &cparam ); //fprintf(stderr,"*** Camera Parameter ***\n"); //arParamDisp( &cparam ); int patt_id; char buffer[100]; sprintf(buffer,"%spatt.hiro",path); if( (patt_id=arLoadPatt(buffer)) < 0 ) { fprintf(stderr,"pattern load error !!\n"); exit(0); } fprintf(stderr,"patt.hiro %d\n", patt_id); sprintf(buffer,"%spatt.sample1",path); if( (patt_id=arLoadPatt(buffer)) < 0 ) { fprintf(stderr,"pattern load error !!\n"); exit(0); } fprintf(stderr,"patt.sample1 %d\n", patt_id); sprintf(buffer,"%spatt.sample2",path); if( (patt_id=arLoadPatt(buffer)) < 0 ) { fprintf(stderr,"pattern load error !!\n"); exit(0); } fprintf(stderr,"patt.sample2 %d\n", patt_id); sprintf(buffer,"%spatt.kanji",path); if( (patt_id=arLoadPatt(buffer)) < 0 ) { fprintf(stderr,"pattern load error !!\n"); exit(0); } fprintf(stderr,"patt.kanji %d\n", patt_id); #if 0 fprintf(stderr,"xysize %d %d\n\ cparam %g\t%g\t%g\t%g\n \ mat\n \ %g\t%g\t%g\t%g\n \ %g\t%g\t%g\t%g\n \ %g\t%g\t%g\t%g\n", cparam.xsize, cparam.ysize, cparam.dist_factor[0], cparam.dist_factor[1], cparam.dist_factor[2], cparam.dist_factor[3], cparam.mat[0][0], cparam.mat[0][1], cparam.mat[0][2], cparam.mat[0][3], cparam.mat[1][0], cparam.mat[1][1], cparam.mat[1][2], cparam.mat[1][3], cparam.mat[2][0], cparam.mat[2][1], cparam.mat[2][2], cparam.mat[2][3] ); #endif /* open the graphics window */ //argInit( &cparam, 1.0, 0, 0, 0, 0 ); //printf("%s,\t\n",cur_filename); findMarkers(dataPtr); argCleanup(); }