1. Termékek
  2.   Kép
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

Nyílt forráskódú C++ általános képtár

C++ API, amely elvonatkoztatja a képábrázolásokat az algoritmusoktól, és támogatja az egyszerű és összetett képekkel való munkát. Hisztogram létrehozása, képátmenetek kiszámítása, konvolúció és újramintavételezés stb.

A képek számos grafikával, digitális videóval, számítógépes látással és képfeldolgozással kapcsolatos projekt alapvető részét képezik. Sőt, a képeket sokféleképpen lehet ábrázolni (színtér, bitmélység, csatornasorrend, igazítási politika stb.). Tehát egy új, képekkel kapcsolatos projekten dolgozni, amely lehet általános és hatékony is, nagy kihívást jelent. A Boost Generic Image Library (GIL) egy nyílt forráskódú könyvtár, amely lehetővé teszi a szoftverfejlesztők számára, hogy egyszerű és összetett képekkel dolgozzanak saját C++ alkalmazásaikon belül.

A Boost.GIL könyvtár nagyszerűsége az, hogy elvonatkoztatja a képábrázolásokat az algoritmusoktól, és lehetővé teszi olyan kód írását, amely számos képen tud működni olyan teljesítménnyel, amely egy adott képtípus esetén a kézi íráshoz hasonló teljesítményű. Így megkönnyíti a fejlesztők munkáját azáltal, hogy lehetővé teszi számukra, hogy egyszer írjanak kódot, és az bármilyen képtípushoz működjön.

A Boost.GIL könyvtár STL és Boost kiegészítésként készült. A könyvtár másik nagyszerű szempontja a gyorsaság és a rugalmasság. A sebesség kulcsfontosságú eleme volt a könyvtár kialakításának. Könnyen meghatározhat bármilyen képparamétert futási időben, sok más könyvtárhoz képest nagyon csekély teljesítményköltséggel. Számos fontos funkciót támogat, mint például a nem bájthoz igazított pixelek, képátmenetek számítása, fokozza az integrációt, csatorna hozzárendelése szürkeárnyalatos pixelekhez, konvolúció és újramintavételezés stb.

Previous Next

A Boost.GIL első lépései

A Boost.GIL telepítésének legegyszerűbb módja a GitHub használata. Kérjük, használja a következő parancsot a zökkenőmentes telepítés érdekében

Telepítse a Boost.GILvia GitHub programot.

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

Képek olvasása és írása

A hisztogram a tónuseloszlás grafikus ábrázolása egy digitális képen. A képfeldolgozás során a kép hisztogramja általában a pixelintenzitás értékek hisztogramjára utal. A Boost.GIL könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy hisztogramot hozzanak létre saját alkalmazásukon belül C++ kóddal. Az egyes tálcákba eső pixelértékek számának megszámlálásával előállítható. Könnyen kiszámíthatja a kép fényerő-hisztogramját is.

Kép írása C++ API-n keresztül

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

Pixel szintű képműveletek C++ API használatával

A Boost.GIL nyílt forráskódú könyvtár teljes támogatást nyújtott a képpont szintű képműveletekhez a saját C++ alkalmazásaikon belül. A könyvtár tartalmaz néhány hasznos műveletet, amelyek lehetővé teszik a felhasználók számára a pixelértékek, pixelmutatók és pixelhivatkozások kezelését, mint például a pixel színezése, csatorna elérése, a két csatorna összehasonlítása, const planar pointer létrehozása, szürke l-érték konvertálása RGB-be. , stb.

Konvertálja a színteret szürkeárnyalatossá a C++ segítségével


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

Képátalakítás a C++ alkalmazásokon belül

A nyílt forráskódú Boost.GIL könyvtár lehetővé teszi a szoftverprogramozók számára, hogy néhány sornyi kóddal elforgatják a képeket. A Boost.GIL számos képátalakítási funkciót támogat, amelyek bármilyen tengelyhez igazított elforgatást végezhetnek, képet függőlegesen vagy vízszintesen elfordíthatnak, téglalap alakú részképet bonthatnak ki, színkonverziót alkalmazhatnak, speciális elforgatásokat 90, 180 vagy 270 fokkal stb. tovább.

Képátalakítás C++ API-n keresztül


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