Boost.GIL
Biblioteca de imagini generice C++ open source
API-ul C++ care extrage reprezentările imaginilor din algoritmi și acceptă lucrul cu imagini simple și complexe. Generați o histogramă, calculați gradienții de imagine, convoluția și reeșantionarea și așa mai departe.
Imaginile sunt partea fundamentală a multor proiecte legate de grafică, video digital, viziune computerizată și procesare a imaginilor. Mai mult, imaginile pot fi reprezentate în multe moduri diferite (spațiul de culoare, adâncimea de biți, ordinea canalelor, politica de aliniere etc.). Așadar, lucrul la un nou proiect legat de imagine, care poate fi generic și eficient, este o provocare. Boost Generic Image Library (GIL) este o bibliotecă open source care oferă dezvoltatorilor de software capacitatea de a lucra cu imagini simple și complexe în propriile aplicații C++.
Lucrul grozav al bibliotecii Boost.GIL este că extrage reprezentările imaginilor din algoritmi și permite scrierea de cod care poate funcționa pe o varietate de imagini cu performanțe comparabile cu scrierea manuală pentru un anumit tip de imagine. Prin urmare, facilitează munca dezvoltatorului, permițându-le să scrie cod o singură dată și să funcționeze pentru orice tip de imagine.
Biblioteca Boost.GIL este concepută ca un compliment STL și Boost. Un alt aspect grozav al bibliotecii este viteza și flexibilitatea. Viteza a fost o parte cheie a designului bibliotecii. Puteți defini cu ușurință orice parametru de imagine în timpul rulării pentru un cost de performanță foarte mic în comparație cu multe alte biblioteci. Oferă suport pentru mai multe caracteristici importante, cum ar fi pixeli nealiniați pe octeți, calculul gradienților de imagine, îmbunătățește integrarea, atribuirea unui canal unui pixel în scară de gri, convoluția și reeșantionarea și așa mai departe.
Noțiuni introductive cu Boost.GIL
Cel mai simplu mod de a instala Boost.GIL este folosirea GitHub. Vă rugăm să utilizați următoarea comandă pentru o instalare fără probleme
Instalați Boost.GILvia GitHub.
git clone --https://github.com/boostorg/gil
Citirea și scrierea imaginilor
Histograma este reprezentarea grafică a distribuției tonale într-o imagine digitală. În contextul procesării imaginii, histograma unei imagini se referă în mod normal la o histogramă a valorilor intensității pixelilor. Biblioteca Boost.GIL permite dezvoltatorilor de software să genereze o histogramă în interiorul propriei aplicații folosind codul C++. Poate fi generat prin numărarea numărului de valori de pixeli care se încadrează în fiecare bin. De asemenea, puteți calcula cu ușurință histograma de luminozitate a imaginii.
Scrierea imaginii prin API-ul C++
#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));
}
Operații de imagine la nivel de pixel folosind API-ul C++
Biblioteca open source Boost.GIL a oferit suport complet pentru operațiunile de imagine la nivel de pixeli în cadrul propriilor aplicații C++. Biblioteca a inclus câteva operații utile care permit utilizatorilor să gestioneze valorile pixelilor, indicatori de pixeli și referințe de pixeli, cum ar fi colorarea unui pixel, accesarea unui canal, compararea celor două canale, construirea unui pointer plan const, conversia valorii l de gri în RGB , si asa mai departe.
Convertiți spațiul de culoare în tonuri de gri prin 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);
}
Transformarea imaginii în interiorul aplicațiilor C++
Biblioteca open source Boost.GIL oferă programatorilor de software posibilitatea de a roti imagini cu doar câteva linii de cod. Boost.GIL acceptă o varietate de funcții de transformare a imaginii care pot efectua orice rotație aliniată pe axă, răsturna imaginea vertical sau orizontal, extrage o sub-imagine dreptunghiulară, aplică conversie de culoare, rotații speciale de 90, 180 sau 270 de grade etc. pe.
Transformarea imaginii prin API-ul C++
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}