Jpg Bilder einlesen und skalieren



  • Ja, ok, groß bin ich, das stimmt. Aber das hat nix mit meinen Programmierkenntnissen zu tun.



  • Müsst ihr das hier diskutieren? 😞



  • Nein, müssen wir nicht. Aber es bietet sich halt an 😉



  • Ich komm irgendwie nicht weiter, wie ich die "Frequenzen" oder "Wahrscheinlichkeiten" von den einzelnen Chars bekomme.
    D.h. bei einer Eingabe von:

    04 a3 23 3a 4d 31 49 4d 47 0d 0a 45 45 43 54 49
    

    Was jetzt nur ein kurzer Teil ist. Ich hab mir da jetzt extrem viele Beispiele angeschaut im netz aber die verwirren meist nur. Vielleicht kann mir hier ja noch mal jemand einen Tipp geben wie ich sowas anstellen könnte.



  • So einfach wie möglich:

    std::vector<std::uint8_t> bytes = readJpegBytes(); // Das darfst du implementieren!
    
    std::array<std::size_t, std::numeric_limits<std::uint8_t>::max()> counter;
    for(std::uint8_t cur : bytes)
        ++counter[cur];
    
    for(std::size_t i = 0; i < counter.size(); ++i)
        std::cout << std::hex << i << "\tkommt " << counter[i] << "x vor\n";
    


  • Ethon schrieb:

    std::vector<std::uint8_t> bytes = readJpegBytes(); // Das darfst du implementieren!
    
    std::array<std::size_t, std::numeric_limits<std::uint8_t>::max()> counter;
    for(std::uint8_t cur : bytes)
        ++counter[cur];
    
    for(std::size_t i = 0; i < counter.size(); ++i)
        std::cout << std::hex << i << "\tkommt " << counter[i] << "x vor\n";
    

    Leider nicht korrekt. 😞



  • Was?



  • Furble Wurble schrieb:

    Leider nicht korrekt. 😞

    Da wird der Standardbibliothek eine an sich überflüssige Klasse spendiert und das Commitee hat es nicht fertig gebracht, sie so zu designen, dass sie der Durchschnittsnutzer korrekt verwendet.

    Immerhin (und das ist ungemein wichtiger) scheint die Richtlinie, die Uniform Initialization unter allen Umständen zu vermeiden durchgedrungen zu sein.

    Good Job, C++11.



  • Ethon schrieb:

    Was?

    Zu kurz. 🙂
    Das std::array ist zu kurz.



  • Furble Wurble schrieb:

    Ethon schrieb:

    Was?

    Zu kurz. 🙂
    Das std::array ist zu kurz.

    Oh, ist mir gar nicht aufgefallen.

    Ethon sollte ausserdem noch {} hinter die Definition schreiben, sonst ist der Inhalt des Arrays undefiniert.



  • Furble Wurble schrieb:

    Ethon schrieb:

    Was?

    Zu kurz. 🙂
    Das std::array ist zu kurz.

    Argh wieso hatte ich den Gedanken dass numeric_limits<uint8_t>::max == 256 ist.
    Aber hey, bei std::array merkt man den Fehler ja zum Glück im ersten Durchlauf im Debugmodus. 😉



  • Wie kann ich an die Information aus dem JPEG Header?

    "Zusätzlich werden im Header der JPEG-Datei Informationen über die Abmessung des Bildes, die Art der Kodierung und die Quantisierungsniveaus abgelegt."


Anmelden zum Antworten