Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2017
    Messaggi
    11

    [C++] Salvare/ rinominare file in maniera multipla

    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 come potete vedere nella parte in grassetto dove una singola immagine viene acquisita e salvata piu volte fintato che siamo nel ciclo while.

    Il problema è che ad ogni ciclo l'immagine viene sovrascritta sempre nello stesso file points.pcd. Affinche questo avvenga, ad ogni ciclo il nome del file di destinazione deve cambiare. Ho provato a fare questo richiamando la funzione rename ma purtroppo questa non mi riconosce la sintassi "points" + [i] + ".pcd".

    Vorrei ottenere in output una serie di file del tipo: points1.pcd points2.pcd..... Un suggerimento?


    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<4 )
    
           {
    
            // Acquire one single image
            BufferParts parts;
            GrabResultPtr ptrGrabResult = camera.GrabSingleImage( 1000, &parts );
    
            // Save 3D data
            if ( ptrGrabResult->status == GrabResult::Ok )
            {
                SavePointCloud( parts, fileName );
                rename ("points.pcd", "points" + [i] + ".pcd" ); 
    
    
    		}
            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;
    }

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    #include <sstream>
    
    while (i < 4) {
        ...
    
        if ( ptrGrabResult etc...)
           std::ostringstream oss;
           oss << "points" << i << ".pcd";
           SavePointCloud(etc)
           rename("points.pcd", oss.str().c_str());
        } etc ...
    
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2017
    Messaggi
    11
    Quote Originariamente inviata da shodan Visualizza il messaggio
    codice:
    #include <sstream>
    
    while (i < 4) {
        ...
    
        if ( ptrGrabResult etc...)
           std::ostringstream oss;
           oss << "points" << i << ".pcd";
           SavePointCloud(etc)
           rename("points.pcd", oss.str().c_str());
        } etc ...
    
    }
    Grazie, domani in laboratorio proverò ad acquisire immagini con questo codice

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.