1. Produkty
  2.   Obraz
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Ogólna biblioteka obrazów Open Source C++

Interfejs C++ API, który wyodrębnia reprezentacje obrazów z algorytmów i obsługuje pracę z prostymi i złożonymi obrazami. Wygeneruj histogram, oblicz gradienty obrazu, splot i ponowne próbkowanie i tak dalej.

Obrazy są podstawową częścią wielu projektów związanych z grafiką, cyfrowym wideo, wizją komputerową i obróbką obrazu. Co więcej, obrazy mogą być reprezentowane na wiele różnych sposobów (przestrzeń kolorów, głębia bitowa, kolejność kanałów, polityka wyrównania itp.). Tak więc praca nad nowym projektem związanym z wizerunkiem, który może być zarówno ogólny, jak i wydajny, jest bardzo trudna. Boost Generic Image Library (GIL) to biblioteka typu open source, która daje programistom możliwość pracy z prostymi i złożonymi obrazami we własnych aplikacjach C++.

Wspaniałą rzeczą w bibliotece Boost.GIL jest to, że abstrahuje ona reprezentacje obrazów od algorytmów i umożliwia pisanie kodu, który może pracować na różnych obrazach z wydajnością porównywalną z pisaniem odręcznym dla określonego typu obrazu. Ułatwia więc pracę programistom, pozwalając im na napisanie kodu raz i działając na dowolnym typie obrazu.

Biblioteka Boost.GIL została zaprojektowana jako uzupełnienie STL i Boost. Kolejnym wspaniałym aspektem biblioteki jest szybkość i elastyczność. Szybkość była kluczowym elementem projektu biblioteki. Możesz łatwo zdefiniować dowolny parametr obrazu w czasie wykonywania przy bardzo niewielkim koszcie wydajności w porównaniu z wieloma innymi bibliotekami. Zapewnia obsługę kilku ważnych funkcji, takich jak piksele niewyrównane do bajtów, obliczanie gradientów obrazu, integracja Boosts, przypisywanie kanału do piksela w skali szarości, splot i ponowne próbkowanie i tak dalej.

Previous Next

Pierwsze kroki z Boost.GIL

Najłatwiejszym sposobem zainstalowania Boost.GIL jest użycie GitHub. Użyj następującego polecenia, aby uzyskać płynną instalację

Zainstaluj Boost.GILvia GitHub.

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

Czytanie i pisanie obrazów

Histogram to graficzna reprezentacja rozkładu tonalnego na obrazie cyfrowym. W kontekście przetwarzania obrazu histogram obrazu zwykle odnosi się do histogramu wartości intensywności pikseli. Biblioteka Boost.GIL umożliwia twórcom oprogramowania generowanie histogramu we własnej aplikacji przy użyciu kodu C++. Można go wygenerować, zliczając liczbę wartości pikseli, które mieszczą się w każdym pojemniku. Możesz również z łatwością obliczyć histogram jasności obrazu.

Pisanie obrazu przez 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));
}

Operacje na obrazach na poziomie pikseli przy użyciu interfejsu API C++

Biblioteka o otwartym kodzie źródłowym Boost.GIL zapewniła pełne wsparcie dla operacji na obrazach na poziomie pikseli w ich własnych aplikacjach C++. Biblioteka zawiera kilka przydatnych operacji, które umożliwiają użytkownikom obsługę wartości pikseli, wskaźników pikseli i odniesień do pikseli, takich jak kolorowanie piksela, dostęp do kanału, porównywanie dwóch kanałów, konstruowanie stałego wskaźnika płaskiego, konwersja szarej wartości l na RGB , i tak dalej.

Konwertuj przestrzeń kolorów na skalę szarości za pomocą 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);
}

Transformacja obrazu w aplikacjach C++

Biblioteka Boost.GIL o otwartym kodzie źródłowym daje programistom możliwość obracania obrazów za pomocą zaledwie kilku linijek kodu. Boost.GIL obsługuje różne funkcje transformacji obrazu, które mogą wykonywać dowolny obrót wyrównany do osi, odwracać obraz w pionie lub poziomie, wyodrębniać prostokątny obraz podrzędny, stosować konwersję kolorów, specjalne obroty o 90, 180 lub 270 stopni itd. na.

Transformacja obrazu za pomocą C++ API


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