void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); // in objects.cpp initCubeArray(); initPyramid(); mode=ORTHOGRAPHIC; init_viewcam(mode); fprintf(stderr, "Viewing mode\n"); return; }
//#define WEB_CAM int main ( int argc, char** argv ) { initLight(); //opencv cpp style #ifdef WEB_CAM cv::VideoCapture cap ( 1 ); // 0: open the default camera // 1: open the integrated webcam #else cv::VideoCapture cap("Cropped1.avi"); //("VDark.avi");//("VTreeTrunk.avi"); //("VRotatePersp.avi");//("VMouth.avi");// ("VCars.avi"); //("VZoomIn.avi");//("VSelf.avi");//("VFootball.mkv");//( "VRectLight.avi" ); //("VCars.avi"); //("VRotateOrtho.avi"); //("VHand.avi"); //("VPerson.avi");//("VHall.avi");// // ("VZoomOut.avi");// #endif if ( !cap.isOpened() ) return -1; btl::image::semidense::CSemiDenseTrackerOrb cSDTOrb; btl::image::semidense::CSemiDenseTracker cSDTFast; cv::gpu::GpuMat cvgmColorFrame,cvgmGrayFrame,cvgmColorFrameSmall; cv::Mat cvmColorFrame, cvmGrayFrame, cvmTotalFrame; cap >> cvmColorFrame; cvgmColorFrame.upload(cvmColorFrame); //resize const float fScale = .5f; cv::gpu::resize(cvgmColorFrame,cvgmColorFrameSmall,cv::Size(0,0),fScale ,fScale ); //to gray cv::gpu::cvtColor(cvgmColorFrameSmall,cvgmGrayFrame,cv::COLOR_RGB2GRAY); initPyramid(cvgmGrayFrame.rows, cvgmGrayFrame.cols ); buildPyramid(cvgmGrayFrame); cvmTotalFrame.create(cvgmColorFrameSmall.rows*2,cvgmColorFrameSmall.cols*2,CV_8UC3); cv::Mat cvmROI0(cvmTotalFrame, cv::Rect( 0, 0, cvgmColorFrameSmall.cols, cvgmColorFrameSmall.rows)); cv::Mat cvmROI1(cvmTotalFrame, cv::Rect( 0, cvgmColorFrameSmall.rows, cvgmColorFrameSmall.cols, cvgmColorFrameSmall.rows)); cv::Mat cvmROI2(cvmTotalFrame, cv::Rect(cvgmColorFrameSmall.cols, cvgmColorFrameSmall.rows, cvgmColorFrameSmall.cols, cvgmColorFrameSmall.rows)); cv::Mat cvmROI3(cvmTotalFrame, cv::Rect(cvgmColorFrameSmall.cols, 0, cvgmColorFrameSmall.cols, cvgmColorFrameSmall.rows)); //copy to total frame cvgmColorFrameSmall.download(cvmROI0); cvgmColorFrameSmall.download(cvmROI1); cvgmColorFrameSmall.download(cvmROI2); cvgmColorFrameSmall.download(cvmROI3); bool bIsInitSuccessful; bIsInitSuccessful = cSDTFast.init( _acvgmShrPtrPyrBWs ); bIsInitSuccessful = cSDTOrb.init( _acvgmShrPtrPyrBWs ); while(!bIsInitSuccessful){ cap >> cvmColorFrame; cvgmColorFrame.upload(cvmColorFrame); //resize cv::gpu::resize(cvgmColorFrame,cvgmColorFrameSmall,cv::Size(0,0),fScale ,fScale ); //to gray cv::gpu::cvtColor(cvgmColorFrameSmall,cvgmGrayFrame,cv::COLOR_RGB2GRAY); //copy into total frame cvgmColorFrameSmall.download(cvmROI0); cvgmColorFrameSmall.download(cvmROI1); cvgmColorFrameSmall.download(cvmROI2); cvgmColorFrameSmall.download(cvmROI3); bIsInitSuccessful = cSDTOrb.init( _acvgmShrPtrPyrBWs ); bIsInitSuccessful = cSDTFast.init( _acvgmShrPtrPyrBWs ); } cv::namedWindow ( "Tracker", 1 ); bool bStart = false; unsigned int uIdx = 0; for ( ;;uIdx++ ){ double t = (double)cv::getTickCount(); int nKey = cv::waitKey( 0 ) ; if ( nKey == 'a' ){ bStart = true; } else if ( nKey == 'q'){ break; } imshow ( "Tracker", cvmTotalFrame ); if(!bStart) continue; //load a new frame cap >> cvmColorFrame; if (cvmColorFrame.empty()) { cap.set(CV_CAP_PROP_POS_AVI_RATIO,0);//replay at the end of the video cap >> cvmColorFrame; cvgmColorFrame.upload(cvmColorFrame); //resize cv::gpu::resize(cvgmColorFrame,cvgmColorFrameSmall,cv::Size(0,0),fScale ,fScale ); //to gray cv::gpu::cvtColor(cvgmColorFrameSmall,cvgmGrayFrame,cv::COLOR_RGB2GRAY); buildPyramid(cvgmGrayFrame); //copy into total frame cvgmColorFrameSmall.download(cvmROI0); cvgmColorFrameSmall.download(cvmROI1); cvgmColorFrameSmall.download(cvmROI2); cvgmColorFrameSmall.download(cvmROI3); cSDTOrb.init( _acvgmShrPtrPyrBWs ); cSDTFast.init( _acvgmShrPtrPyrBWs ); //get second frame cap >> cvmColorFrame; cvgmColorFrame.upload(cvmColorFrame); //resize cv::gpu::resize(cvgmColorFrame,cvgmColorFrameSmall,cv::Size(0,0),fScale ,fScale ); //to gray cv::gpu::cvtColor(cvgmColorFrameSmall,cvgmGrayFrame,cv::COLOR_RGB2GRAY); //copy into total frame cvgmColorFrameSmall.download(cvmROI0); cvgmColorFrameSmall.download(cvmROI1); cvgmColorFrameSmall.download(cvmROI2); cvgmColorFrameSmall.download(cvmROI3); }else{