Boost.GIL
Generische Open-Source-Bildbibliothek für C++
C++-API, die Bilddarstellungen von Algorithmen abstrahiert und die Arbeit mit einfachen und komplexen Bildern unterstützt. Generieren Sie ein Histogramm, berechnen Sie Bildverläufe, Faltung und Resampling und so weiter.
Bilder sind der grundlegende Teil vieler Projekte in den Bereichen Grafik, digitales Video, Computer Vision und Bildverarbeitung. Darüber hinaus können Bilder auf unterschiedliche Weise dargestellt werden (Farbraum, Bittiefe, Kanalreihenfolge, Ausrichtungspolitik usw.). Daher ist die Arbeit an einem neuen Bild-bezogenen Projekt, das sowohl generische als auch effiziente sein kann, eine große Herausforderung. Boost Generic Image Library (IL) ist eine Open Source Bibliothek, die Software-Entwicklern die Möglichkeit gibt, mit einfachen und komplexen Bildern in ihren eigenen C++ Anwendungen zu arbeiten.
Das Großartige an der Boost.IL Bibliothek ist, dass sie Bilddarstellungen von Algorithmen abstrahiert und es erlaubt, Code zu schreiben, der auf einer Vielzahl von Bildern arbeiten kann, die mit einer Handschrift vergleichbar sind. Es macht die Arbeit des Entwicklers einfach, indem es ihnen erlaubt, Code einmal zu schreiben und es für jeden Bildtyp zu verwenden.
Die Boost.IL Bibliothek wurde als TL und Boost Kompliment entworfen. Ein weiterer wichtiger Aspekt der Bibliothek ist Geschwindigkeit und Flexibilität. Geschwindigkeit ist ein wichtiger Bestandteil des Designs der Bibliothek. Sie können jeden Bildparameter während der Laufzeit für sehr geringe Leistungskosten im Vergleich zu vielen anderen Bibliotheken leicht definieren. Es bietet Unterstützung für mehrere wichtige Funktionen wie z.B. blinkfreie Pixel, Computer-Bildverläufe, Boots-Integration, Zuweisung eines Kanals zu einem Graustufenpixel, Trost & Abtastung usw.
Erste Schritte mit Boost.GIL
Der einfachste Weg, Boost.GIL zu installieren, ist die Verwendung von GitHub. Bitte verwenden Sie den folgenden Befehl für eine reibungslose Installation
Installieren Sie Boost.GIL über GitHub.
git clone --https://github.com/boostorg/gil
Bilder lesen und schreiben
Histogramm ist die grafische Darstellung der Tonwertverteilung in einem digitalen Bild. Im Kontext der Bildverarbeitung bezieht sich das Histogramm eines Bildes normalerweise auf ein Histogramm der Pixelintensitätswerte. Die Boost.GIL-Bibliothek ermöglicht es Softwareentwicklern, mithilfe von C++-Code ein Histogramm in ihrer eigenen Anwendung zu generieren. Er kann generiert werden, indem die Anzahl der Pixelwerte gezählt wird, die in jeden Bin fallen. Sie können auch das Helligkeitshistogramm des Bildes einfach berechnen.
Schreiben des Bildes über C++ API
#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL
#include
#include
using namespace boost::gil;
int main()
{
rgb8_image_t img(512, 512);
rgb8_pixel_t red(255, 0, 0);
fill_pixels(view(img), red);
png_write_view("redsquare.png", const_view(img));
}
Bildoperationen auf Pixelebene unter Verwendung der C++-API
Die Open-Source-Bibliothek Boost.IL hat vollständige Unterstützung für Bildoperationen auf Pixelebene innerhalb ihrer eigenen C++ Anwendungen bereitgestellt. Die Bibliothek hat einige nützliche Funktionen integriert, die es Benutzern ermöglichen, Pixelwerte, Pixel-Zeiger und Pixelreferenzen zu verwalten, wie zum Beispiel eine Pixelfarbe, Zugriff auf einen Kanal, Vergleich der beiden Kanäle.
Farbraum in Graustufen umwandeln über C++
template
void x_luminosity_gradient(SrcView const& src, DstView const& dst)
{
using gray_pixel_t = pixel::type, gray_layout_t>;
x_gradient(color_converted_view(src), dst);
}
Bild Transformation in C++ Apps
Die Open Source Boost.IL Bibliothek gibt Softwareprogrammierern die Möglichkeit, Bilder mit nur wenigen Codezeilen zu rotieren. Der Boost.IL unterstützt eine Vielzahl von Bildtransformationsfunktionen, die eine beliebige blitzblitzblitzförmige Rotation, vertikal oder horizontal ausführen, ein rechteckiges Unterbild entpacken, 180 Grad Farbkonvertierung anwenden, spezielle Rotationen, 90 Grad, 90 Grad.
Bild Transformation durch C++
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}