// // Prints out all features and their values and details of a given camera. // If no camera ID is provided, the first camera will be used. // Starts and stops the API // Opens and closes the camera // // Parameters: // [in] CameraID The ID of the camera to work // void ListFeatures::Print( std::string CameraID ) { VimbaSystem& sys = VimbaSystem::GetInstance(); // Get a reference to the VimbaSystem singleton std::cout << "Vimba Version V" << sys << "\n"; // Print out version of Vimba VmbErrorType err = sys.Startup(); // Initialize the Vimba API FeaturePtrVector features; // A vector of std::shared_ptr<AVT::VmbAPI::Feature> objects CameraPtr pCamera = CameraPtr(); // Our camera std::stringstream strError; if( VmbErrorSuccess == err ) { if( CameraID.empty() ) // If no ID was provided use the first camera { CameraPtrVector cameras; err = sys.GetCameras( cameras ); if( VmbErrorSuccess == err && !cameras.empty() ) { err = cameras[0]->Open( VmbAccessModeFull ); // Open the camera if( VmbErrorSuccess == err ) { pCamera = cameras[0]; err = pCamera->GetID( CameraID ); } } } else { err = sys.OpenCameraByID( CameraID.c_str(), VmbAccessModeFull, pCamera ); // Get and open the camera } if( NULL != pCamera ) { std::cout << "Printing all features of camera with ID: " << CameraID << "\n"; err = pCamera->GetFeatures( features ); // Fetch all features of our cam if( VmbErrorSuccess == err ) { // Query all static details as well as the value of all fetched features and print them out. std::for_each( features.begin(), features.end(), PrintFeatures ); } else { std::cout << "Could not get features. Error code: " << err << " (" << AVT::VmbAPI::Examples::ErrorCodeToMessage( err ) << ")" << "\n"; } pCamera->Close(); } else { std::cout << "Could not open camera or no camera available. Error code: " << err << " (" << AVT::VmbAPI::Examples::ErrorCodeToMessage( err ) << ")" << "\n"; } sys.Shutdown(); } else { std::cout << "Could not start system. Error code: " << err << " (" << AVT::VmbAPI::Examples::ErrorCodeToMessage( err ) << ")" << "\n"; } }
/**printing camera info for a camera. *\note this function is used with for_each and is called for each camera in range cameras.begin(), cameraas.end() */ void PrintCameraInfo( const CameraPtr &camera ) { std::string strID; std::string strName; std::string strModelName; std::string strSerialNumber; std::string strInterfaceID; std::ostringstream ErrorStream; VmbErrorType err = camera->GetID( strID ); if( VmbErrorSuccess != err ) { ErrorStream << "[Could not get camera ID. Error code: " << err << "("<<AVT::VmbAPI::Examples::ErrorCodeToMessage(err)<<")"<< "]"; strID = ErrorStream.str(); } err = camera->GetName( strName ); if( VmbErrorSuccess != err ) { ErrorStream << "[Could not get camera name. Error code: " << err << "("<<AVT::VmbAPI::Examples::ErrorCodeToMessage(err)<<")"<< "]"; strName = ErrorStream.str() ; } err = camera->GetModel( strModelName ); if( VmbErrorSuccess != err ) { ErrorStream << "[Could not get camera mode name. Error code: " << err << "("<<AVT::VmbAPI::Examples::ErrorCodeToMessage(err)<<")"<< "]"; strModelName = ErrorStream.str(); } err = camera->GetSerialNumber( strSerialNumber ); if( VmbErrorSuccess != err ) { ErrorStream << "[Could not get camera serial number. Error code: " << err << "("<<AVT::VmbAPI::Examples::ErrorCodeToMessage(err)<<")"<< "]"; strSerialNumber = ErrorStream.str(); } err = camera->GetInterfaceID( strInterfaceID ); if( VmbErrorSuccess != err ) { ErrorStream << "[Could not get interface ID. Error code: " << err << "("<<AVT::VmbAPI::Examples::ErrorCodeToMessage(err)<<")"<< "]"; strInterfaceID = ErrorStream.str() ; } std::cout << "/// Camera Name : " << strName << "\n" << "/// Model Name : " << strModelName << "\n" << "/// Camera ID : " << strID << "\n" << "/// Serial Number : " << strSerialNumber << "\n" << "/// @ Interface ID : " << strInterfaceID << "\n\n"; }
void Scene::AddCamera(CameraPtr& camera) { (*mCameraMap)[camera->GetID()] = camera; //camera->Load(); }