Atvirojo kodo C++ biblioteka lygiagrečiam vaizdų apdorojimui
Nemokama C++ API, palaikanti bendruosius N dimensijų vaizdų sudėtinius rodinius, patobulintą vaizdo apdorojimo algoritmų rinkinį ir pan.
„Video++“ yra galinga kelių gijų ir kelių platformų C++ vaizdo redagavimo API, leidžianti programinės įrangos kūrėjams dirbti su vaizdais ir vaizdo failais savo C++ programose. Biblioteka yra labai paprasta valdyti ir sukurta naudojant naujas C++11/C++14 funkcijas. Pagrindinė „Video++“ idėja yra nuo nulio perdaryti vaizdo apdorojimo sistemą, naudojant naująjį C++ standartą.
Viena puiki „Video++“ bibliotekos ypatybė yra paprastas lygiagretaus vaizdo apdorojimo branduolių apibrėžimas, kuris veikia iki 32 kartų greičiau nei naivi neoptimizuota versija. Bibliotekoje yra keletas svarbių funkcijų, tokių kaip bendrieji N matmenų vaizdo konteineriai, patobulintas vaizdo apdorojimo algoritmų rinkinys, užpildymo spalva, geresnis atminties valdymas, užpildymo kraštinė, 3D antrinių vaizdų naudojimas ir daug daugiau.
Biblioteka suteikė naudingą funkciją, leidžiančią pasiekti vaizdo konteinerius, kurie suteikia prieigą prie pikselių buferio ir kitos informacijos, naudingos vaizdui apdoroti. Tai taip pat užtikrina „openCV“ sąveiką ir palaiko aiškias konversijas į „OpenCV“ vaizdų tipus ir iš jų.
Darbo su „Video++“ pradžia
Norėdami visiškai įdiegti, naudokite šią komandą. „Video++“ yra tik antraštė, todėl norėdami pasiekti visas būtinas funkcijas, turite įtraukti vpp.h antraštę. Prieš diegdami „Video++“, savo sistemoje taip pat turite gauti „Eigen3“ ir „Boost“.
Įdiekite „Video++“ naudodami komandą „git“.
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Lygiagretus vaizdo apdorojimas per C++ biblioteką
Atvirojo kodo Video++ biblioteka leidžia programinės įrangos kūrėjams apibrėžti branduolius lygiagrečių vaizdų apdorojimui naudojant C++ komandas. Puiku yra tai, kad branduoliai gali veikti 32 kartus greičiau nei įprasti. Jis vienodai paskirsto branduolių vykdymą visuose galimuose CPU branduoliuose, kuriuose veikia kelios gijos, veikiančios keliuose branduoliuose. Jis palaiko tokias funkcijas kaip kraštinių užpildymas verte, kraštinių veidrodžio užpildymas, lygiavimo nustatymas, vaizdo pikselių prieiga, filtrų taikymas vaizdams ir pan.
Vaizdo pridėjimas per C++
Atvirojo kodo „Video++“ biblioteka suteikė visas funkcijas, skirtas vaizdams pridėti naudojant pikselių filtrą. Jis siūlo bendrų objektų ir rutinų rinkinį, leidžiantį greitai įrašyti efektyvius paprastų filtrų diegimus. Daugelis vaizdo apdorojimo filtrų yra paprastos funkcijos, kurios užpildo pikselius apskaičiuotomis reikšmėmis, todėl nėra priklausomybės tarp skaičiavimų, susijusių su skirtingais pikseliais.
Pridėkite 2D vaizdą naudodami 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]]);
}
}