Von Bild RGB-Farben der Pixel auslesen in C++

2 Antworten

Im "standard C++" gibt es keine fertigen Funktionen für Bildverarbeitung.

Im Prinzip gibt es vier Möglichkeiten, um ans Ziel zu kommen:

Erstens (so habe ich bisher immer gearbeitet):

Mit einem kommandozeilen-basierten Programm die JPEG- und PNG-Dateien ins TrueColor-BMP-Format umwandeln. Diese Dateien sind zwar riesig groß, haben jedoch ein einfaches Dateiformat, das man auch als ungeübter Programmierer die Daten auslesen kann: Die RGB-Werte sind als 3 Bytes pro Pixel in der Datei gespeichert und man kann relativ einfach ausrechnen, welche 3 Bytes welchem Pixel entsprechen.

Zweitens:

Die PNG- und JPEG-Dekromprimierungs-Library verwenden. Nachteil davon: Diese Bibliotheken sind recht komplex und der Umgang für Anfänger nicht besonders einfach.

Drittens:

Unter Windows die Verwendung von "GDI+". Das ist diejenige (C++) Bibliothek, auf die die von "BlackArma" bereits erwähnte "Bitmap"-Klasse in C# zugreift. Auch hier scheint der Umgang mit dieser Bibliothek nicht ganz trivial zu sein.

C++.NET (oder eben C#):

Da würden dir alle Klassen zur Verfügung stehen, die auch unter C# zur Verfügung stehen. Allerdings glaube ich, dass du mit der Verwendung der Methode "GetPixel" deutlich langsamer bist, als wenn du mit relativ optimalem Code auf die Bytes der Grafik direkt zugreifst. Das gleiche Problem hättest du aber auch bei C#. Dies würde dann ein Problem darstellen, wenn du sehr viele große Bilder auswerten müsstest.

Geht auch C#? Da gibt es eine Klasse "Bitmap" die das kann.

In C++ es selber zu schreiben wird bestimmt hässlich werden. Schau dir mal das UI-Framework "Qt" an, da werden jede Menge nützlicher Klassen mitgeliefert, ansonsten "libjpeg" oder libpng".

Alternativ kannst du mal im diesem Forum -> https://www.c-plusplus.net/forum/ nachfragen, da könntest du eher Hilfe bekommen, vor allem wenn du es selber schreiben willst.