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

Nyílt forráskódú C++ könyvtár párhuzamos képfeldolgozáshoz 

Ingyenes C++ API, amely támogatja az általános N-dimenziós képtárolókat, továbbfejlesztett képfeldolgozó algoritmusokat és így tovább.

A Video++ egy nagy teljesítményű többszálas és többplatformos C++ képszerkesztő API, amely lehetővé teszi a szoftverfejlesztők számára, hogy képekkel és videofájlokkal dolgozzanak saját C++ alkalmazásaikon belül. A könyvtár nagyon könnyen kezelhető, és a C++11/C++14 új funkcióit kihasználva lett kifejlesztve. A Video++ mögött meghúzódó fő ötlet egy képfeldolgozó keretrendszer újratervezése a semmiből, kihasználva az új C++ szabvány előnyeit.

A Video++ könyvtár egyik nagyszerű tulajdonsága a párhuzamos képfeldolgozó kernelek egyszerű meghatározása, amelyek akár 32-szer gyorsabban futnak, mint a naiv, nem optimalizált verzió. A könyvtár számos fontos funkciót tartalmaz, például általános N-dimenziós képtárolókat, továbbfejlesztett képfeldolgozó algoritmusokat, kitöltőszínt, jobb memóriakezelést, kitöltési határt, 3D-s alképek használatát és még sok mást.

A könyvtár hasznos funkciót biztosít a képtárolók eléréséhez, amelyek hozzáférést biztosítanak a pixelpufferhez és egy másik, a kép feldolgozásához hasznos információhoz. Együttműködést biztosít az openCV-vel, és támogatja az OpenCV képtípusokba való explicit konvertálást.

Previous Next

A Video++ használatának első lépései

Kérjük, használja a következő parancsot a teljes telepítéshez. A Video++ csak fejléceket tartalmaz, így az összes szükséges funkció eléréséhez a vpp.h fejlécet kell tartalmaznia. A Video++ telepítése előtt telepítenie kell az Eigen3-at és a Boost-ot is a rendszerére.

Telepítse a Video++-t a git paranccsal

 git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix

Párhuzamos képfeldolgozás C++ könyvtáron keresztül

A nyílt forráskódú Video++ könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy kerneleket definiáljanak párhuzamos képek feldolgozásához C++ parancsok segítségével. A nagyszerű dolog az, hogy a kernelek 32-szer gyorsabban tudnak futni, mint a normálok. A kernelek végrehajtását egyformán szétosztotta az összes elérhető CPU-magon, amelyek több szálon futnak több magon. Támogatja az olyan funkciókat, mint a szegélyek kitöltése értékkel, a kerettükör kitöltése, az igazítás beállítása, a képpontok elérése, a szűrők alkalmazása a képekre stb.

Kép hozzáadása C++-on keresztül

A nyílt forráskódú Video++ könyvtár teljes funkcionalitást biztosít a képek pixelenkénti szűrővel történő hozzáadásához. Általános objektumok és rutinok készletét kínálja, amelyek lehetővé teszik az egyszerű szűrők hatékony megvalósításának gyors megírását. Sok képfeldolgozó szűrő egyszerű függvény, amely kitölti a képpontokat számított értékekkel, így nincs függőség a különböző képpontokra vonatkozó számítások között.

2D kép C++

int main()
{
  using namespace vpp;
  image2d img1(make_box2d(100, 200), _border = 3);
  image2d img2({100, 200});
  assert(&img1(0,0) == &img1[0][0]);
  assert(&img1(0,0) == &(*img1.begin()));
  assert(img1.domain() == img2.domain());
  assert(img1.nrows() == 100);
  assert(img1.ncols() == 200);
  {
    image2d img(make_box2d(5, 5), _border = 1);
    assert(&img(0,0) == img.address_of(vint2(0,0)));
    assert(&img(4,0) == img.address_of(vint2(4,0)));
    auto s1 = img.subimage(img.domain());
    assert(&s1(0,0) == s1.address_of(vint2(0,0)));
    for (auto p : img.domain())
      assert(img(p) == img[p[0]][p[1]]);
    for (auto p : img.domain())
      assert(img(p) == s1[p[0]][p[1]]);
  }
}
 Magyar