1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Daten in Datei Speichern

Dieses Thema im Forum "C/C++" wurde erstellt von shamon, 5. Januar 2009.

  1. shamon

    shamon Grünschnabel

    Hallo!

    Ich würde gerne die Daten, die ich in einer Funktion erzeuge in einer Text-Datei speichern und wieder ausgeben.

    Hier ist die Funktion:

    void ProcessImage(CyUserBuffer &userBuffer, CSpyder3GigEInterface *camera)
    {
    // Process image
    unsigned char *tempBuffer = userBuffer.GetBuffer();
    long max = -1, maxX, maxY;
    long min = 0x7fffffff, minX, minY; //
    unsigned long width=0;
    unsigned long height=0;
    unsigned long pixelWidth =0;
    camera->GetSizeX(width);
    camera->GetSizeY(height);
    camera->GetPixelByteSize(pixelWidth);
    for (int r = 0; r<(int)height; r++)
    {
    for (int c = 0; c< (int)width ; c++)
    {
    int value;
    if ( pixelWidth == 1)
    value = (int)(tempBuffer[ r*width+c]);
    else
    {
    unsigned short indx =(r*width+c) * pixelWidth ;
    value = tempBuffer[ indx+1 ]&0x0f;
    value = value<<8;
    value |= tempBuffer[indx];
    }
    if ( value > max )
    {
    max =value;
    maxX = c;
    maxY = r;
    }
    if ( value < min )
    {
    min = value;
    minX = c;
    minY = r;
    }
    if ( r%100 == 0)
    printf("%d,", value);
    }
    if ( r%100 == 0)
    printf("\n");
    }
    printf( "Maximum Value(%d, %d) = %d\n",maxX,maxY, max);
    printf( "Minimum Value(%d, %d) = %d\n",minX,minY, min);
    }

    Wenn ihr mir helfen könntet, dann wäre das echt super.

    Eine Frage wäre da noch. Was bewirkt die Zeile mit "value = value<<8;"?

    Danke schon mal im Vorraus!
     
  2. jokey2

    jokey2 Erfahrenes Mitglied

    Der Code ist also nicht von Dir...
    Die Zeile heißt, das der Wert von value um 8 Bit nach links geschoben wird. Das hättest du aber auch selber rausfinden können, wenn Du mal nach dem <<-Operator geschaut hättest.

    Was Deine Frage mit der Datei angeht, ußt du Dich etwas genauer ausdrücken. Was willst Du in eine Datei schreiben? Die Daten, die momentan mit printf ausgegeben werden oder was?
     
  3. shamon

    shamon Grünschnabel

    Ja genau!
    Also alle Werte, die mit printf ausgegeben werden.

    Dazu zählen:

    printf("%d,", value);

    printf("\n");

    printf( "Maximum Value(%d, %d) = %d\n",maxX,maxY, max);
    printf( "Minimum Value(%d, %d) = %d\n",minX,minY, min);

    Habe schon viel bei google gesucht, aber nix vernünftiges gefunden.
     
  4. deepthroat

    deepthroat Erfahrenes Mitglied

  5. shamon

    shamon Grünschnabel

    Danke.

    Naja, wie es aussieht kommt es auch immer drauf an, was man in google eingibt.

    Wäre es aber auch möglich, wenn du mir eventuell ein Code beispiel geben könntest.
    Wäre echt super!
     
    Zuletzt bearbeitet: 5. Januar 2009
  6. sheel

    sheel I love Asm Administrator

    Am Anfang:

    Code (Text):
    1. FILE *dat=NULL; //Kann natürlich auch anderer Varname sein
    2. dat=fopen(" Dateiname.txt " ,"a"); //Statt Dateiname kannst natürlich auch was anderes schreiben
    3. if(dat==NULL)printf("Fehler"); //oder sonst irgendwas, jedenfalls stop
    Am Schluss
    if(dat)fclose(dat);

    Und alle printf durch fprintf(dat,...)ersetzen,
    zb
    printf("%d",bla);
    wird zu
    fprintf(dat,"%d",bla);

    Falls ein Fehler beim öffnen der Datei auftritt und die die Funktion trotzdem durchmachen willst,
    halt ohne Dateiausgabe, schreib vor die fprintf noch "if(dat)" dazu

    Ich weiß, es gibt sinnvollere Lösungen, aber soviele printfs sinds doch gar nicht...

    Gruß
     
Die Seite wird geladen...