1. Produktai
  2.   Vaizdas
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Atvirojo kodo C++ bendroji vaizdų biblioteka

C++ API, kuri abstrahuoja vaizdų vaizdus iš algoritmų ir palaiko darbą su paprastais ir sudėtingais vaizdais. Generuokite histogramą, apskaičiuokite vaizdo gradientus, konvoliuciją ir atrinkimą ir pan.

Vaizdai yra pagrindinė daugelio projektų, susijusių su grafika, skaitmeniniu vaizdo įrašu, kompiuterine vizija ir vaizdo apdorojimu, dalis. Be to, vaizdai gali būti vaizduojami įvairiais būdais (spalvų erdve, bitų gyliu, kanalų tvarka, derinimo politika ir kt.). Taigi dirbti su nauju su įvaizdžiu susijusiu projektu, kuris gali būti bendras ir veiksmingas, yra labai sudėtinga. Boost Generic Image Library (GIL) yra atvirojo kodo biblioteka, suteikianti programinės įrangos kūrėjams galimybę dirbti su paprastais ir sudėtingais vaizdais savo C++ programose.

Puikus Boost.GIL bibliotekos bruožas yra tai, kad ji abstrahuoja vaizdų vaizdus iš algoritmų ir leidžia įrašyti kodą, kuris gali dirbti su įvairiais vaizdais, kurių našumas panašus į rašymo ranka konkretaus tipo vaizdo įrašus. Taigi tai palengvina kūrėjų darbą, nes leidžia vieną kartą parašyti kodą ir jis veikia bet kokio tipo vaizdams.

Boost.GIL biblioteka sukurta kaip STL ir Boost komplimentas. Kitas puikus bibliotekos aspektas yra greitis ir lankstumas. Greitis buvo pagrindinė bibliotekos dizaino dalis. Vykdymo metu galite lengvai apibrėžti bet kurį vaizdo parametrą už labai nedideles našumo išlaidas, palyginti su daugeliu kitų bibliotekų. Jis palaiko keletą svarbių funkcijų, pvz., nebaitais suderintus pikselius, vaizdo gradientų skaičiavimą, padidina integraciją, kanalo priskyrimą pilkos spalvos pikseliui, konvoliuciją ir atranką ir pan.

Previous Next

Darbo su Boost.GIL pradžia

Lengviausias būdas įdiegti Boost.GIL yra naudoti GitHub. Norėdami sklandžiai įdiegti, naudokite šią komandą

Įdiekite Boost.GILvia GitHub.

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

Vaizdų skaitymas ir rašymas

Histograma yra grafinis tonų pasiskirstymo skaitmeniniame vaizde vaizdavimas. Vaizdo apdorojimo kontekste vaizdo histograma paprastai reiškia pikselių intensyvumo reikšmių histogramą. Boost.GIL biblioteka leidžia programinės įrangos kūrėjams sukurti histogramą savo programoje naudojant C++ kodą. Jį galima sugeneruoti skaičiuojant pikselių reikšmių, patenkančių į kiekvieną dėžę, skaičių. Taip pat galite lengvai apskaičiuoti vaizdo šviesumo histogramą.

Vaizdo rašymas per 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));
}

Pikselių lygio vaizdo operacijos naudojant C++ API

Atvirojo kodo biblioteka Boost.GIL suteikė visišką palaikymą pikselių lygio vaizdo operacijoms savo C++ programose. Bibliotekoje yra keletas naudingų operacijų, leidžiančių vartotojams tvarkyti pikselių reikšmes, pikselių rodykles ir pikselių nuorodas, pvz., nuspalvinti pikselį, pasiekti kanalą, palyginti du kanalus, sukurti plokštuminę žymeklį, konvertuoti pilką l reikšmę į RGB. , ir taip toliau.

Konvertuokite spalvų erdvę į pilkus tonus naudodami 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);
}

Vaizdo transformavimas C++ programose

Atvirojo kodo Boost.GIL biblioteka programinės įrangos programuotojams suteikia galimybę pasukti vaizdus naudojant tik kelias kodo eilutes. Boost.GIL palaiko įvairias vaizdo transformavimo funkcijas, kurios gali atlikti bet kokį ašies išlygiuotą pasukimą, apversti vaizdą vertikaliai arba horizontaliai, išgauti stačiakampį antrinį vaizdą, pritaikyti spalvų konvertavimą, specialius pasukimus 90, 180 arba 270 laipsnių ir pan. įjungta.

Vaizdo transformavimas per C++ API


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