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; }
//======================================================= // SetCameraParams //======================================================= bool mitk::OptitrackTrackingDevice::SetCameraParams(int exposure, int threshold , int intensity, int videoType ) { MITK_DEBUG << "SetCameraParams"; if(this->m_initialized) { int num_cams = 0; int resultUpdate; bool resultSetCameraSettings; for( int i=OPTITRACK_ATTEMPTS; i>0; i--) { resultUpdate = TT_Update(); // Get Update for the Optitrack API if(resultUpdate == NPRESULT_SUCCESS) { MITK_DEBUG << "Update Succeed"; num_cams = TT_CameraCount(); i = 0; } else { MITK_DEBUG << mitk::OptitrackErrorMessages::GetOptitrackErrorMessage(resultUpdate); MITK_DEBUG << "Trying again..."; Sleep(30); } } // If no cameras are connected if(num_cams == 0) { MITK_DEBUG << "No cameras are connected to the device"; return false; mitkThrowException(mitk::IGTException) << "No cameras are connected to the device"; } for(int cam = 0; cam < num_cams; cam++) // for all connected cameras { for( int i=OPTITRACK_ATTEMPTS; i>0; i--) { resultUpdate = TT_Update(); // Get Update for the Optitrack API if(resultUpdate == NPRESULT_SUCCESS) { MITK_DEBUG << "Update Succeed for camera number " << cam; resultSetCameraSettings = TT_SetCameraSettings(cam,videoType,exposure,threshold,intensity); if(resultSetCameraSettings) { MITK_INFO << "Camera # "<<cam<< " params are set"; i = 0; // End attempts for camera #cam } else { MITK_DEBUG << mitk::OptitrackErrorMessages::GetOptitrackErrorMessage(resultSetCameraSettings); if(i == 1) mitkThrowException(mitk::IGTException) << "Camera number " << cam << " failed during setting the params. Error: " << mitk::OptitrackErrorMessages::GetOptitrackErrorMessage(resultSetCameraSettings); } } else { MITK_DEBUG << mitk::OptitrackErrorMessages::GetOptitrackErrorMessage(resultUpdate); MITK_DEBUG << "Update: Trying again..."; } } } } else { MITK_INFO << "System is not Initialized -> System is not ready to perform the Camera Parameters Setting"; mitkThrowException(mitk::IGTException) << "System is not Initialized -> System is not ready to perform the Camera Parameters Setting"; return false; } return true; }