1. Tuotteet
  2.   Kuva
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Avoimen lähdekoodin C++ yleinen kuvakirjasto

C++ API, joka abstraktioi kuvien esitykset algoritmeista ja tukee työskentelyä yksinkertaisten ja monimutkaisten kuvien kanssa. Luo histogrammi, laske kuvan gradientit, konvoluutio ja uudelleennäytteenotto ja niin edelleen.

Kuvat ovat olennainen osa monissa grafiikkaan, digitaaliseen videoon, tietokonenäköön ja kuvankäsittelyyn liittyvissä projekteissa. Lisäksi kuvia voidaan esittää monella eri tavalla (väriavaruus, bittisyvyys, kanavajärjestys, kohdistuskäytäntö jne.). Joten uuden imago-projektin työstäminen, joka voi olla yleinen ja tehokas, on erittäin haastavaa. Boost Generic Image Library (GIL) on avoimen lähdekoodin kirjasto, joka antaa ohjelmistokehittäjille mahdollisuuden työskennellä yksinkertaisten ja monimutkaisten kuvien kanssa omissa C++ -sovelluksissaan.

Hienoa Boost.GIL-kirjastossa on, että se abstrahoi kuvien esitykset algoritmeista ja mahdollistaa koodin kirjoittamisen, joka voi toimia erilaisissa kuvissa suorituskyvyllä, joka on verrattavissa käsinkirjoitukseen tietylle kuvatyypille. Joten se tekee kehittäjien työstä helppoa antamalla heidän kirjoittaa koodin kerran ja antaa sen toimia mille tahansa kuvatyypille.

Boost.GIL-kirjasto on suunniteltu STL- ja Boost-komplementiksi. Toinen kirjaston hieno puoli on nopeus ja joustavuus. Nopeus on ollut keskeinen osa kirjaston suunnittelua. Voit helposti määrittää minkä tahansa kuvaparametrin ajon aikana erittäin pienellä suorituskykykustannuksilla verrattuna moniin muihin kirjastoihin. Se tukee useita tärkeitä ominaisuuksia, kuten ei-tavuihin kohdistettuja pikseleitä, kuvan gradientien laskemista, tehostaa integraatiota, kanavan määrittämistä harmaasävypikselille, konvoluutiota ja uudelleennäytteenottoa ja niin edelleen.

Previous Next

Boost.GIL:n käytön aloittaminen

Helpoin tapa asentaa Boost.GIL on käyttää GitHubia. Käytä seuraavaa komentoa sujuvaan asennukseen

Asenna Boost.GILvia GitHub.

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

Kuvien lukeminen ja kirjoittaminen

Histogrammi on graafinen esitys digitaalisen kuvan sävyjakaumasta. Kuvankäsittelyn yhteydessä kuvan histogrammi viittaa normaalisti pikseliintensiteettiarvojen histogrammiin. Boost.GIL-kirjaston avulla ohjelmistokehittäjät voivat luoda histogrammin omassa sovelluksessaan C++-koodilla. Se voidaan luoda laskemalla kuhunkin laatikkoon osuvien pikseliarvojen määrä. Voit myös laskea kuvan kirkkaushistogrammin helposti.

Kuvan kirjoittaminen C++ API:n kautta

#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));
}

Pikselitason kuvatoiminnot C++ API:lla

Avoimen lähdekoodin kirjasto Boost.GIL on tarjonnut täydellisen tuen pikselitason kuvatoiminnoille omissa C++-sovelluksissaan. Kirjastossa on joitain hyödyllisiä toimintoja, joiden avulla käyttäjät voivat käsitellä pikseliarvoja, pikseliosoittimia ja pikseliviittauksia, kuten pikselin värittämisen, kanavan avaamisen, kahden kanavan vertailun, const tasomaisen osoittimen muodostamisen, harmaan l-arvon muuntamisen RGB:ksi. , ja niin edelleen.

Muunna väriavaruus harmaasävyiksi C++:n avulla


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

Kuvan muunnos C++-sovelluksissa

Avoimen lähdekoodin Boost.GIL-kirjasto antaa ohjelmoijille mahdollisuuden kääntää kuvia vain parilla koodirivillä. Boost.GIL tukee useita kuvan muunnostoimintoja, jotka voivat suorittaa minkä tahansa akselin suuntaisen kierron, kääntää kuvan pysty- tai vaakasuunnassa, poimia suorakulmaisen alikuvan, käyttää värimuunnoksia, erikoiskiertoja 90, 180 tai 270 astetta jne. päällä.

Kuvan muunnos C++ API:n kautta


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