Pixel in einem Bild ermitteln



  • Hallo!

    Ich hab die aufgabe gestellt bekommen, das ich ein beliebiges Bild öffne und das programm mir dann die Pixel ausgibt und mir die Anzahl an grauwerten sagt. Ich kann im moment die datei nur direkt im quellcode eingeben, würde sie aber gern über eine eingabenaufforderung eingeben lasse, damit das programm variabler ist.
    Vielleicht kann mir ja einer von euch helfen. Vielen Dank schon mal.

    hier nun das was ich bisher hab.

    #include "stdafx.h"
    #include "stdio.h"

    int main(void)
    {
    double grauwert=0;
    double i=1;
    double prozent=55;
    char zeichen;
    int wert;

    FILE *datei;

    datei=fopen("C:\\Temp\\lea.raw","r");

    while (feof(datei)==0)
    {
    zeichen=wert; --> wert = ASCII wert

    if (wert<128)
    {
    grauwert=grauwert+1;
    }

    fscanf(datei,"%c",&zeichen);
    i=i+1;
    }

    grauwert=grauwert-1;

    i=i-2;

    prozent=grauwert/i*100;

    printf("Die Datei enthaelt insgesamt %6.0lf Pixel.\n",i);
    printf("Davon sind %6.0lf Fremdwerte.\n",grauwert);
    printf("Das entspricht %3.2lf%%",prozent);
    fclose (datei);
    }



  • nix int main(void);

    int main(int argc, char** argv) {
      machwas_mit(argv[1]);
    }
    


  • Das ist aber C und kein C++
    Habt ihr C in der Schule?



  • nee wir sind gerad dabei c++ zu lernen
    sind aber noch nicht wirklich weit. das ist eine aufgabe die ich an der arbeit bekommen habe.



  • also unter C++ geht so :

    char szfile[50];
    ifstream dat;   // der argumentlose Konstruktor "ifstream" erzeugt das Objekt"dat"  
    
    //-------------- Existenztest der Datei  
       do 
       {  
          dat.clear();  //clear status flags des Inputstreams "dat"
          cout<<"Dateiname inklusive Pfad eingeben: "; 
          cin>>szfile; 
    
          dat.open(szfile,ios::in); // "dat" wird geöffnet zum Lesen
    
          if(dat.fail())                     // Fehlertest durchführen   
          cout<<"Datei existiert nicht!"<<endl; 
    
       }while(dat.fail());
    

Anmelden zum Antworten