Salve ragazzi, devo acquisire delle immagini attraverso una camera 3D. L'azienda produttrice ha fornito un software che permette l'acquisizione di una singola immagine ad ogni avvio del programma. Modificando il file c++ vorrei fare in modo che mi vengano acquisite piu immagini attraverso un unico lancio dell'applicazione. Per fare questo ho scritto un ciclo while attraverso il quale riesco a catturare tante immagini quante sono le iterazioni del ciclo while.
Ora ho bisogno che queste immagini vengano acquisite ad intervalli regolari, ad esempio una ogni secondo per un minuto. Qualcuno ha qualche idea su come fare? Ho letto in giro su internet che posso usare la funzione clock oppure la funzione interval ma purtroppo non so come implementarla nel ciclo.
Grazie mille
codice:int main(int argc, char* argv[]) { int i; i=1; int exitCode = EXIT_FAILURE; const char* fileName = argc > 1 ? argv[1] : "points.pcd" ; CToFCamera camera; try { CToFCamera::InitProducer(); camera.OpenFirstCamera(); CEnumerationPtr ptrComponentSelector = camera.GetParameter("ComponentSelector"); CBooleanPtr ptrComponentEnable = camera.GetParameter("ComponentEnable"); CEnumerationPtr ptrPixelFormat = camera.GetParameter("PixelFormat"); // Parameterize the camera to send 3D coordinates and intensity data ptrComponentSelector->FromString("Range"); ptrComponentEnable->SetValue( true ); ptrPixelFormat->FromString("Coord3D_ABC32f"); ptrComponentSelector->FromString("Intensity"); ptrComponentEnable->SetValue(true); ptrPixelFormat->FromString("Mono16"); while (i<60 ) { // Acquire one single image BufferParts parts; GrabResultPtr ptrGrabResult = camera.GrabSingleImage( 1000, &parts ); // Save 3D data if ( ptrGrabResult->status == GrabResult::Ok ) { std::ostringstream oss; oss << "points" << i << ".pcd"; SavePointCloud( parts, fileName ); rename("points.pcd", oss.str().c_str()); cout << fileName << endl; } else { cerr << "Failed to grab an image." << endl; } i++; } camera.Close(); exitCode = EXIT_SUCCESS; } catch ( GenICam::GenericException& e ) { cerr << "Exception occurred: " << endl << e.GetDescription() << endl; // After successfully opening the camera, the IsConnected method can be used // to check if the device is still connected. if ( camera.IsOpen() && ! camera.IsConnected() ) { cerr << "Camera has been removed." << endl; } } if ( CToFCamera::IsProducerInitialized() ) CToFCamera::TerminateProducer(); // Won't throw any exceptions cout << endl << "Press Enter to exit." << endl; while (cin.get() != '\n'); return exitCode; }