1. Məhsullar
  2.   Şəkil
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Açıq Mənbəli C++ Ümumi Şəkil Kitabxanası

Alqoritmlərdən şəkil təsvirlərini abstraktlaşdıran və sadə və mürəkkəb şəkillərlə işləməyi dəstəkləyən C++ API. Histoqram yaradın, şəkil gradientlərini hesablayın, bükülmə və yenidən nümunə götürün və s.

Şəkillər qrafika, rəqəmsal video, kompüter görmə və təsvirin işlənməsi ilə bağlı bir çox layihələrin əsas hissəsidir. Üstəlik, şəkillər müxtəlif yollarla təqdim edilə bilər (rəng sahəsi, bit dərinliyi, kanal sırası, hizalanma siyasəti və s.). Beləliklə, həm ümumi, həm də səmərəli ola biləcək yeni bir görüntü ilə əlaqəli layihə üzərində işləmək çox çətindir. Boost Ümumi Şəkil Kitabxanası (GIL) proqram tərtibatçılarına öz C++ proqramlarında sadə və mürəkkəb şəkillərlə işləmək imkanı verən açıq mənbəli kitabxanadır.

Boost.GIL kitabxanasının üstün cəhəti ondan ibarətdir ki, o, alqoritmlərdən təsvir təsvirlərini mücərrədləşdirir və müəyyən bir şəkil növü üçün əl yazısı ilə müqayisə edilə bilən performansa malik müxtəlif şəkillər üzərində işləyə bilən kodu yazmağa imkan verir. Beləliklə, o, bir dəfə kod yazmağa və istənilən şəkil növü üçün işləməsinə icazə verməklə tərtibatçının işini asanlaşdırır.

Boost.GIL kitabxanası STL və Boost komplimenti kimi hazırlanmışdır. Kitabxananın başqa bir əla cəhəti sürət və çeviklikdir. Sürət kitabxananın dizaynının əsas hissəsi olmuşdur. Bir çox digər kitabxanalarla müqayisədə çox cüzi bir performans dəyəri üçün işləmə zamanı istənilən görüntü parametrini asanlıqla müəyyən edə bilərsiniz. O, bayta düzülməyən piksellər, hesablama şəkil qradiyenti, inteqrasiyanı gücləndirir, boz miqyaslı pikselə kanal təyin etmək, konvolyusiya və yenidən nümunə götürmə və s. kimi bir neçə vacib funksiyaya dəstək verir.

Previous Next

Boost.GIL ilə işə başlamaq

Boost.GIL-i quraşdırmağın ən asan yolu GitHub-dan istifadə etməkdir. Düzgün quraşdırma üçün aşağıdakı əmrdən istifadə edin

Boost.GILvia GitHub quraşdırın.

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

Şəkilləri oxumaq və yazmaq

Histoqram rəqəmsal təsvirdə tonal paylanmanın qrafik təsviridir. Şəkilin işlənməsi kontekstində təsvirin histoqramı adətən piksel intensivliyi dəyərlərinin histoqramına istinad edir. Boost.GIL kitabxanası proqram tərtibatçılarına C++ kodundan istifadə edərək öz tətbiqi daxilində histoqram yaratmağa imkan verir. O, hər qutuya düşən piksel dəyərlərinin sayını hesablamaqla yaradıla bilər. Siz həmçinin asanlıqla təsvirin parlaqlıq histoqramını hesablaya bilərsiniz.

C++ API vasitəsilə Şəkil yazmaq

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

C++ API istifadə edərək Piksel Səviyyəli Şəkil Əməliyyatları

Boost.GIL açıq mənbə kitabxanası öz C++ proqramları daxilində piksel səviyyəli təsvir əməliyyatları üçün tam dəstəyi təmin etmişdir. Kitabxana istifadəçilərə piksel dəyərlərini, piksel göstəricilərini və piksel istinadlarını idarə etməyə imkan verən bəzi faydalı əməliyyatları ehtiva edir, məsələn, pikseli rəngli etmək, kanala daxil olmaq, iki kanalı müqayisə etmək, sabit planar göstərici qurmaq, boz l dəyərini RGB-yə çevirmək , və sair.

C++ vasitəsilə Rəng Məkanını Boz Şkala çevirin


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

C++ Tətbiqlərində Şəkil Çevrilməsi

Açıq mənbəli Boost.GIL kitabxanası proqram proqramçılarına şəkilləri yalnız bir neçə sətir kodla çevirmək imkanı verir. Boost.GIL istənilən oxa düzülmüş fırlanma, şəkli şaquli və ya üfüqi istiqamətdə çevirə, düzbucaqlı alt-şəkil çıxara, rəng çevrilməsini tətbiq edə bilən, 90, 180 və ya 270 dərəcə xüsusi fırlanmaları yerinə yetirə bilən müxtəlif təsvir çevrilmə funksiyalarını dəstəkləyir. haqqında.

C++ API vasitəsilə Şəkil Transformasiyası


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