1. Produkti
  2.   Attēls
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Atvērtā pirmkoda C++ vispārējā attēlu bibliotēka

C++ API, kas abstrahē attēlu attēlojumus no algoritmiem un atbalsta darbu ar vienkāršiem un sarežģītiem attēliem. Ģenerējiet histogrammu, aprēķiniet attēla gradientus, konvolūciju un atkārtotu paraugu ņemšanu utt.

Attēli ir būtiska daļa no daudziem projektiem, kas saistīti ar grafiku, digitālo video, datorredzi un attēlu apstrādi. Turklāt attēlus var attēlot dažādos veidos (krāsu telpa, bitu dziļums, kanālu secība, izlīdzināšanas politika utt.). Tāpēc darbs pie jauna ar attēlu saistīta projekta, kas var būt gan vispārīgs, gan efektīvs, ir ļoti sarežģīts. Boost Generic Image Library (GIL) ir atvērtā pirmkoda bibliotēka, kas programmatūras izstrādātājiem sniedz iespēju strādāt ar vienkāršiem un sarežģītiem attēliem savās C++ lietojumprogrammās.

Lieliskā Boost.GIL bibliotēkas priekšrocība ir tā, ka tā abstrahē attēlu attēlojumus no algoritmiem un ļauj rakstīt kodu, kas var strādāt ar dažādiem attēliem ar veiktspēju, kas ir salīdzināma ar rakstīšanu ar roku konkrētam attēla veidam. Tādējādi tas atvieglo izstrādātāju darbu, ļaujot vienreiz rakstīt kodu un ļaujot tam darboties jebkura veida attēlam.

Boost.GIL bibliotēka ir veidota kā STL un Boost kompliments. Vēl viens lielisks bibliotēkas aspekts ir ātrums un elastība. Ātrums ir bijusi galvenā bibliotēkas dizaina sastāvdaļa. Jūs varat viegli definēt jebkuru attēla parametru izpildes laikā par ļoti nelielām veiktspējas izmaksām salīdzinājumā ar daudzām citām bibliotēkām. Tas nodrošina atbalstu vairākām svarīgām funkcijām, piemēram, baitiem nesaskaņotiem pikseļiem, attēla gradientu aprēķināšanai, pastiprina integrāciju, kanāla piešķiršanu pelēktoņu pikselim, konvolūciju un atkārtotu paraugu ņemšanu un tā tālāk.

Previous Next

Darba sākšana ar Boost.GIL

Vienkāršākais veids, kā instalēt Boost.GIL, ir izmantot GitHub. Lūdzu, izmantojiet šo komandu vienmērīgai instalēšanai

Instalējiet Boost.GILvia GitHub.

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

Attēlu lasīšana un rakstīšana

Histogramma ir digitālā attēla toņu sadalījuma grafisks attēlojums. Attēlu apstrādes kontekstā attēla histogramma parasti attiecas uz pikseļu intensitātes vērtību histogrammu. Boost.GIL bibliotēka ļauj programmatūras izstrādātājiem ģenerēt histogrammu savā lietojumprogrammā, izmantojot C++ kodu. To var ģenerēt, saskaitot pikseļu vērtību skaitu, kas ietilpst katrā tvertnē. Varat arī viegli aprēķināt attēla spilgtuma histogrammu.

Attēla rakstīšana, izmantojot 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));
}

Pikseļu līmeņa attēla darbības, izmantojot C++ API

Atvērtā koda bibliotēka Boost.GIL ir nodrošinājusi pilnīgu atbalstu pikseļu līmeņa attēlu darbībām savās C++ lietojumprogrammās. Bibliotēkā ir iekļautas dažas noderīgas darbības, kas lietotājiem ļauj apstrādāt pikseļu vērtības, pikseļu norādes un pikseļu atsauces, piemēram, pikseļu iekrāsošanu, piekļuvi kanālam, divu kanālu salīdzināšanu, const planar pointera konstruēšanu, pelēkās l vērtības pārveidošanu RGB. , un tā tālāk.

Pārveidojiet krāsu telpu uz pelēktoņu, izmantojot 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);
}

Attēlu pārveidošana C++ lietotnēs

Atvērtā pirmkoda Boost.GIL bibliotēka sniedz programmatūras programmētājiem iespēju pagriezt attēlus tikai ar pāris koda rindiņām. Boost.GIL atbalsta dažādas attēlu pārveidošanas funkcijas, kas var veikt jebkuru pa asi izlīdzinātu pagriešanu, pagriezt attēlu vertikāli vai horizontāli, iegūt taisnstūrveida apakšattēlu, izmantot krāsu pārveidošanu, īpašus pagriešanas par 90, 180 vai 270 grādiem utt. ieslēgts.

Attēlu pārveidošana, izmantojot C++ API


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