1. Produkter
  2.   Bild
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Open Source C++ Generic Image Library

C++ API som abstraherar bildrepresentationer från algoritmer och stödjer arbete med enkla och komplexa bilder. Generera ett histogram, beräkna bildgradienter, faltning och omsampling och så vidare.

Bilder är den grundläggande delen av många projekt relaterade till grafik, digital video, datorseende och bildbehandling. Dessutom kan bilder representeras på många olika sätt (färgrymd, bitdjup, kanalordning, anpassningspolicy, etc.). Så att arbeta med ett nytt bildrelaterat projekt som kan vara generiskt såväl som effektivt är mycket utmanande. Boost Generic Image Library (GIL) är ett bibliotek med öppen källkod som ger mjukvaruutvecklare möjlighet att arbeta med enkla och komplexa bilder i sina egna C++-applikationer.

Det fantastiska med Boost.GIL-biblioteket är att det abstraherar bildrepresentationer från algoritmer och tillåter skrivning av kod som kan fungera på en mängd olika bilder med prestanda jämförbar med handskrift för en viss bildtyp. Så det gör utvecklarnas jobb enklare genom att låta dem skriva kod en gång och få den att fungera för alla bildtyper.

Boost.GIL-biblioteket är designat som en STL- och Boost-komplimang. En annan stor aspekt av biblioteket är hastighet och flexibilitet. Snabbhet har varit en viktig del av utformningen av biblioteket. Du kan enkelt definiera vilken bildparameter som helst vid körning för en mycket liten prestandakostnad jämfört med många andra bibliotek. Det ger stöd för flera viktiga funktioner som icke-bytejusterade pixlar, datorbildsgradienter, ökar integrationen, tilldelning av en kanal till en gråskalepixel, faltning och omsampling, och så vidare.

Previous Next

Komma igång med Boost.GIL

Det enklaste sättet att installera Boost.GIL är att använda GitHub. Använd följande kommando för en smidig installation

Installera Boost.GILvia GitHub.

git clone --https://github.com/boostorg/gil

Läsa och skriva bilder

Histogram är den grafiska representationen av tonfördelningen i en digital bild. I bildbehandlingssammanhang hänvisar histogrammet för en bild normalt till ett histogram av pixelintensitetsvärdena. Boost.GIL-biblioteket gör det möjligt för mjukvaruutvecklare att generera ett histogram i sin egen applikation med hjälp av C++-kod. Den kan genereras genom att räkna antalet pixelvärden som faller i varje fack. Du kan också enkelt beräkna ljusstyrkans histogram för bilden.

Skriva bild 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));
}

Bildoperationer på pixelnivå med C++ API

Öppen källkodsbiblioteket Boost.GIL har tillhandahållit komplett stöd för bildoperationer på pixelnivå i sina egna C++-applikationer. Biblioteket har inkluderat några användbara operationer som gör det möjligt för användare att hantera pixelvärden, pixelpekare och pixelreferenser, som att göra en pixel färgad, komma åt en kanal, jämföra de två kanalerna, konstruera en plan pekare, konvertera grått l-värde till RGB , och så vidare.

Konvertera färgrymd till gråskala 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);
}

Bildtransformation i C++-appar

Boost.GIL-biblioteket med öppen källkod ger programvaruprogrammerare möjligheten att rotera bilder med bara ett par rader kod. Boost.GIL stöder en mängd olika bildtransformationsfunktioner som kan utföra vilken axelinriktad rotation som helst, vända bilden vertikalt eller horisontellt, extrahera en rektangulär underbild, tillämpa färgkonvertering, specialrotationer med 90, 180 eller 270 grader och så på.

Bildtransformation via C++ API


  template 
  void y_gradient(const SrcView& src, const DstView& dst) {
      x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
  }
 Svenska