Beispiel #1
0
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;
}
Beispiel #2
0
//#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{