Open Source C++ bibliotek til parallel billedbehandling
Gratis C++ API, der understøtter generiske N-dimensionelle billedbeholdere, forbedret sæt billedbehandlingsalgoritmer og så videre.
Video++ er en kraftfuld multi-threaded og cross-platform C++ billedredigering API, der gør det muligt for softwareudviklere at arbejde med billeder og videofiler i deres egne C++ applikationer. Biblioteket er meget nemt at håndtere og er udviklet ved at udnytte de nye funktioner i C++11/C++14. Hovedideen bag Video++ er at redesigne fra bunden af en billedbehandlingsramme ved at udnytte den nye C++-standard.
En stor egenskab ved Video++-biblioteket er den nemme definition af parallelle billedbehandlingskerner, som kører op til 32 gange hurtigere end den naive ikke-optimerede version. Biblioteket har inkluderet flere vigtige funktioner, såsom generiske N-dimensionelle billedbeholdere, et forbedret sæt billedbehandlingsalgoritmer, fyldfarve, bedre hukommelsesstyring, fyldkant, brug af 3D-underbilleder og mange flere.
Biblioteket har givet en nyttig funktion til at få adgang til billedbeholderne, som giver adgang til pixelbufferen og til en anden nyttig information til at behandle billedet. Det giver også interoperabilitet til openCV og understøtter eksplicitte konverteringer til og fra OpenCV-billedtyper.
Kom godt i gang med Video++
Brug venligst følgende kommando til en komplet installation. Video++ er kun header, så for at få adgang til alle de nødvendige funktioner skal du inkludere vpp.h header. Du skal også have Eigen3 og Boost på dit system, før du installerer Video++.
Installer Video++ via git-kommando
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Parallel billedbehandling via C++ bibliotek
Open source Video++-biblioteket giver softwareudviklere mulighed for at definere kerner til behandling af parallelle billeder ved hjælp af C++-kommandoer. Det fantastiske er, at kernerne kan køre 32 gange hurtigere end normale. Det spredte udførelsen af kerner ligeligt over alle tilgængelige CPU-kerner, der kører flere tråde, der kører på flere kerner. Det understøtter funktioner som udfyldning af grænser med værdi, udfyldning af kantspejl, indstilling af justering, adgang til billedpixel, anvendelse af filtre på billeder og så videre.
Billedtilføjelse via C++
Open source Video++-biblioteket har leveret komplet funktionalitet til tilføjelse af billeder ved hjælp af pixelvist filter. Det tilbyder et sæt generiske objekter og rutiner, der gør det muligt at skrive effektive implementeringer af simple filtre hurtigt. Mange billedbehandlingsfiltre er simple funktioner, der fylder pixels med beregnede værdier, og har således ingen afhængigheder mellem beregninger vedrørende forskellige pixels.
Tilføj 2D-billede via 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]]);
}
}