Boost.GIL
Libreria di immagini generiche C++ open source
API C++ che astrae le rappresentazioni delle immagini dagli algoritmi e supporta l'utilizzo di immagini semplici e complesse. Genera un istogramma, calcola i gradienti dell'immagine, la convoluzione e il ricampionamento e così via.
Le immagini sono la parte fondamentale di molti progetti relativi alla grafica, al video digitale, alla visione del computer e all'elaborazione delle immagini. Inoltre, le immagini possono essere rappresentate in molti modi diversi (spazio di colore, profondità di bit, ordine di canale, politica di allineamento, ecc.). Quindi lavorare su un nuovo progetto di immagine che può essere generico e efficiente è molto impegnativo. Boost Generic Image Library (IL) è una libreria open source che offre agli sviluppatori di software la possibilità di lavorare con immagini semplici e complesse all'interno delle proprie C++ applicazioni.
La grande cosa della libreria Boost.IL è che astrae le rappresentazioni di immagini dagli algoritmi e permette di scrivere codice che può lavorare su una varietà di immagini con prestazioni paragonabili alla scrittura a mano per un particolare tipo di immagine. Così rende i lavori dello sviluppatore facile consentendo loro di scrivere codice una volta e di farlo funzionare per qualsiasi tipo di immagine.
La libreria Boost.IL è progettata come un complimento TL e Boost. Un altro grande aspetto della biblioteca è la velocità e la flessibilità. La velocità è stata una parte fondamentale del design della biblioteca. È possibile definire facilmente qualsiasi parametro di immagine in tempo di esecuzione per un costo di prestazioni molto minore rispetto a molte altre librerie. Fornisce supporto per diverse caratteristiche importanti come pixel non-byte-allineati, gradienti di immagine di calcolo, integrazione Boots, assegnando un canale a un pixel scala grigia, consolazione e campionamento, e così via.
Guida introduttiva a Boost.GIL
Il modo più semplice per installare Boost.GIL è utilizzare GitHub. Si prega di utilizzare il comando seguente per un'installazione senza problemi
Installa Boost.GIL tramite GitHub.
git clone --https://github.com/boostorg/gil
Leggere e scrivere immagini
L'istogramma è la rappresentazione grafica della distribuzione tonale in un'immagine digitale. Nel contesto dell'elaborazione delle immagini, l'istogramma di un'immagine normalmente si riferisce a un istogramma dei valori di intensità dei pixel. La libreria Boost.GIL consente agli sviluppatori di software di generare un istogramma all'interno della propria applicazione utilizzando il codice C++. Può essere generato contando il numero di valori di pixel che cadono in ogni bin. Puoi anche calcolare facilmente l'istogramma della luminosità dell'immagine.
Immagine di scrittura via 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));
}
Operazioni sulle immagini a livello di pixel tramite l'API C++
La libreria open source Boost.IL ha fornito un supporto completo per operazioni di immagine a livello pixel all'interno delle proprie C++ applicazioni. La libreria ha incluso alcune operazioni utili che consentono agli utenti di gestire i valori pixel, i puntatori pixel e i riferimenti pixel, come fare un pixel colorato, accedere a un canale, confrontando i due canali, costruendo l'indicatore di piano grigio costruttivo,
Convertire spazio colore in scala di grigi via 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);
}
Trasformazione immagine all'interno di C++ App
La libreria Boost.IL open source offre ai programmatori software la possibilità di ruotare le immagini con solo un paio di linee di codice. Boost.IL supporta una varietà di funzioni di trasformazione dell'immagine in grado di eseguire qualsiasi rotazione ad asse, infradire l'immagine verticalmente o orizzontalmente, estrarre una sotto-immagine rettangolare, applicare la conversione del colore, 180, rotazione speciale per 90,
Trasformazione immagine via C++ API
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}