Avoimen lähdekoodin C++-kirjasto rinnakkaiskuvankäsittelyä varten
Ilmainen C++ API, joka tukee yleisiä N-ulotteisia kuvasäiliöitä, parannettuja kuvankäsittelyalgoritmeja ja niin edelleen.
Video++ on tehokas monisäikeinen ja monialustainen C++-kuvankäsittelysovellusliittymä, jonka avulla ohjelmistokehittäjät voivat käsitellä kuvia ja videotiedostoja omissa C++ -sovelluksissaan. Kirjasto on erittäin helppo käsitellä, ja se on kehitetty hyödyntäen C++11/C++14:n uusia ominaisuuksia. Video++:n pääideana on suunnitella uudelleen alusta alkaen kuvankäsittelykehys hyödyntäen uutta C++-standardia.
Yksi Video++-kirjaston hieno ominaisuus on helppo määritellä rinnakkaiset kuvankäsittelyytimet, jotka toimivat jopa 32 kertaa nopeammin kuin naiivi ei-optimoitu versio. Kirjastossa on useita tärkeitä ominaisuuksia, kuten yleiset N-ulotteiset kuvasäiliöt, parannettu joukko kuvankäsittelyalgoritmeja, täyttövärit, parempi muistinhallinta, täyttöreuna, 3D-alikuvien käyttö ja paljon muuta.
Kirjasto on tarjonnut hyödyllisen ominaisuuden käsiksi kuvasäiliöihin, jotka tarjoavat pääsyn pikselipuskuriin ja toiseen kuvan käsittelyssä hyödylliseen tietoon. Se tarjoaa myös yhteentoimivuuden openCV:n kanssa ja tukee nimenomaisia muunnoksia OpenCV-kuvatyypeihin ja niistä.
Video++:n käytön aloittaminen
Käytä seuraavaa komentoa täydelliseen asennukseen. Video++ on vain otsikko, joten sinun on sisällytettävä vpp.h-otsikko käyttääksesi kaikkia tarvittavia ominaisuuksia. Sinun on myös hankittava Eigen3 ja Boost järjestelmääsi ennen Video++:n asentamista.
Asenna Video++ git-komennolla
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Rinnakkaiskuvankäsittely C++-kirjaston kautta
Avoimen lähdekoodin Video++-kirjaston avulla ohjelmistokehittäjät voivat määritellä ytimiä rinnakkaiskuvien käsittelyä varten C++-komennoilla. Hienoa on, että ytimet voivat toimia 32 kertaa nopeammin kuin tavalliset. Se hajauttaa ytimien suorittamisen tasaisesti kaikkiin käytettävissä oleviin CPU-ytimiin, joissa on useita useissa ytimissä pyöriviä säikeitä. Se tukee ominaisuuksia, kuten reunusten täyttäminen arvolla, reunapeilin täyttäminen, kohdistuksen asettaminen, kuvan pikselien käyttö, suodattimien käyttäminen kuviin ja niin edelleen.
Kuvan lisäys C++:n kautta
Avoimen lähdekoodin Video++-kirjasto on tarjonnut täydelliset toiminnot kuvien lisäämiseen pikselikohtaisella suodattimella. Se tarjoaa joukon yleisiä objekteja ja rutiineja, jotka mahdollistavat yksinkertaisten suodattimien tehokkaiden toteutusten nopean kirjoittamisen. Monet kuvankäsittelysuodattimet ovat yksinkertaisia toimintoja, jotka täyttävät pikseleitä lasketuilla arvoilla, joten niissä ei ole riippuvuuksia eri pikseleitä koskevien laskelmien välillä.
Lisää 2D-kuva C++:n kautta
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]]);
}
}