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

Boost.GIL

 
 

Open Source C++ Generisk billedbibliotek

C++ API, der abstraherer billedrepræsentationer fra algoritmer og understøtter arbejde med enkle og komplekse billeder. Generer et histogram, beregn billedgradienter, foldning og resampling og så videre.

Billeder er den grundlæggende del af mange projekter relateret til grafik, digital video, computersyn og billedbehandling. Desuden kan billeder repræsenteres på mange forskellige måder (farverum, bitdybde, kanalrækkefølge, tilpasningspolitik osv.). Så det er meget udfordrende at arbejde på et nyt billedrelateret projekt, der kan være generisk såvel som effektivt. Boost Generic Image Library (GIL) er et open source-bibliotek, der giver softwareudviklere mulighed for at arbejde med enkle og komplekse billeder i deres egne C++-applikationer.

Det fantastiske ved Boost.GIL-biblioteket er, at det abstraherer billedrepræsentationer fra algoritmer og tillader skrivning af kode, der kan arbejde på en række billeder med en ydeevne, der kan sammenlignes med håndskrift for en bestemt billedtype. Så det gør udvikleropgaver nemme ved at tillade dem at skrive kode én gang og få det til at virke til enhver billedtype.

Boost.GIL-biblioteket er designet som et STL- og Boost-kompliment. Et andet fantastisk aspekt ved biblioteket er hastighed og fleksibilitet. Hastighed har været en central del af designet af biblioteket. Du kan nemt definere en hvilken som helst billedparameter på kørselstidspunktet for en meget lille ydelsesomkostning sammenlignet med mange andre biblioteker. Det giver understøttelse af flere vigtige funktioner, såsom ikke-byte-justerede pixels, databehandlingsbilledgradienter, øger integrationen, tildeling af en kanal til en gråskalapixel, foldning og resampling og så videre.

Previous Next

Kom godt i gang med Boost.GIL

Den nemmeste måde at installere Boost.GIL på er ved at bruge GitHub. Brug venligst følgende kommando for en problemfri installation

Installer Boost.GILvia GitHub.

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

Læse og skrive billeder

Histogram er den grafiske repræsentation af tonefordelingen i et digitalt billede. I billedbehandlingskonteksten refererer histogrammet af et billede normalt til et histogram af pixelintensitetsværdierne. Boost.GIL-biblioteket gør det muligt for softwareudviklere at generere et histogram inde i deres egen applikation ved hjælp af C++-kode. Det kan genereres ved at tælle antallet af pixelværdier, der falder i hver bin. Du kan også nemt beregne billedets lysstyrkehistogram.

Skrive billede 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));
}

Billedoperationer på pixelniveau ved hjælp af C++ API

Open source-biblioteket Boost.GIL har ydet komplet support til billedoperationer på pixelniveau i deres egne C++-applikationer. Biblioteket har inkluderet nogle nyttige operationer, der gør det muligt for brugere at håndtere pixelværdier, pixelpointere og pixelreferencer, såsom at lave en pixel farvet, få adgang til en kanal, sammenligne de to kanaler, konstruere en konstant plan pointer, konvertere grå l-værdi til RGB , og så videre.

Konverter farverum til gråtoner 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);
}

Billedtransformation i C++ Apps

Open source Boost.GIL-biblioteket giver softwareprogrammører mulighed for at rotere billeder med blot et par linjer kode. Boost.GIL understøtter en række billedtransformationsfunktioner, der kan udføre enhver aksejusteret rotation, vende billede lodret eller vandret, udtrække et rektangulært underbillede, anvende farvekonvertering, specielle rotationer med 90, 180 eller 270 grader og så på.

Billedtransformation via C++ API


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