int main() { TT_Initialize(); //setup TT cameras printf("Opening Calibration: %s\n", TT_LoadCalibration("CalibrationResult 2010-11-02 5.03pm.cal") == NPRESULT_SUCCESS ? "PASS" : "ERROR"); int cameraCount = TT_CameraCount(); CameraData_t cameras[MAX_NUM_CAMERAS]; pthread_t threads[MAX_NUM_CAMERAS]; assert(MAX_NUM_CAMERAS == cameraCount); TT_SetCameraSettings(0, NPVIDEOTYPE_PRECISION,300, 150, 15); TT_SetCameraSettings(1, NPVIDEOTYPE_PRECISION,300, 150, 15); TT_SetCameraSettings(2, NPVIDEOTYPE_PRECISION,300, 150, 15); /* 1. Change camera settings ^ 2. Allocate space for the displays */ for(int i = 0; i < cameraCount; i++){ cameras[i].i = i; cameras[i].displayImage = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1); } /* call the threads for display of camera data */ pthread_mutex_init(&keyMutex, NULL); for(int i = 0; i < cameraCount; i++){ if(pthread_create(&threads[i], NULL, showCameraWindow, (void*)&cameras[i])){ printf("\aThread couldn't be created!"); TT_Shutdown(); TT_FinalCleanup(); exit(0); } } printf("Press any Key to Exit!\n"); while(!_kbhit()){ int result = TT_Update(); if(result != NPRESULT_SUCCESS) Sleep(70UL); //wait for updated frame 1/sleeptime[ms] = frame-rate } for(int i = 0; i < cameraCount; i++) pthread_join(threads[i], NULL); pthread_mutex_destroy(&keyMutex); cvDestroyAllWindows(); TT_Shutdown(); TT_FinalCleanup(); return 0; }
//======================================================= // LoadCalibration //======================================================= bool mitk::OptitrackTrackingDevice::LoadCalibration() { MITK_DEBUG << "Loading System Calibration"; int resultLoadCalibration; // Check the file path if(this->m_calibrationPath.empty()){ MITK_INFO << "Calibration Path is empty"; mitkThrowException(mitk::IGTException) << "Calibration Path is empty"; return false; } // Once the system is ready and Initialized , a calibration file is loaded. if(this->m_initialized) { for( int i=OPTITRACK_ATTEMPTS; i>0; i--) { resultLoadCalibration = TT_LoadCalibration(this->m_calibrationPath.c_str()); if(resultLoadCalibration != NPRESULT_SUCCESS) { MITK_DEBUG << mitk::OptitrackErrorMessages::GetOptitrackErrorMessage(resultLoadCalibration); MITK_DEBUG << "Trying again..."; } else { MITK_DEBUG << "Calibration file has been loaded successfully"; return true; } } MITK_INFO << "System cannot load a calibration file"; mitkThrowException(mitk::IGTException) << "System cannot load a calibration file"; } else { MITK_INFO << "System is not ready for load a calibration file because it has not been initialized yet"; mitkThrowException(mitk::IGTException) << "System is not ready for load a calibration file because it has not been initialized yet"; return false; } // Never reach this point return false; }