Open Source C++ bibliotek för parallell bildbehandling
Gratis C++ API som stöder generiska N-dimensionella bildbehållare, förbättrad uppsättning bildbehandlingsalgoritmer och så vidare.
Video++ är ett kraftfullt flertrådigt och plattformsoberoende C++-bildredigerings-API som gör det möjligt för mjukvaruutvecklare att arbeta med bilder och videofiler i sina egna C++-applikationer. Biblioteket är mycket lätt att hantera och är utvecklat med hjälp av de nya funktionerna i C++11/C++14. Huvudidén bakom Video++ är att designa om från grunden av ett ramverk för bildbehandling genom att dra nytta av den nya C++-standarden.
En stor egenskap hos Video++-biblioteket är den enkla definitionen av parallella bildbehandlingskärnor som går upp till 32 gånger snabbare än den naiva icke-optimerade versionen. Biblioteket har inkluderat flera viktiga funktioner som generiska N-dimensionella bildbehållare, en förbättrad uppsättning bildbehandlingsalgoritmer, fyllningsfärg, bättre minneshantering, fyllningskant, användning av 3D-underbilder och många fler.
Biblioteket har tillhandahållit en användbar funktion för att komma åt bildbehållarna som erbjuder åtkomst till pixelbufferten och till annan information användbar för att bearbeta bilden. Det ger också interoperabilitet till openCV och stöder explicita konverteringar till och från OpenCV-bildtyper.
Komma igång med Video++
Använd följande kommando för en komplett installation. Video++ är endast header, så för att komma åt alla nödvändiga funktioner måste du inkludera vpp.h header. Du måste också få Eigen3 och Boost på ditt system innan du installerar Video++.
Installera Video++ via git-kommandot
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Parallell bildbehandling via C++ bibliotek
Video++-biblioteket med öppen källkod tillåter mjukvaruutvecklare att definiera kärnor för bearbetning av parallella bilder med C++-kommandon. Det fantastiska är att kärnorna kan köras 32 gånger snabbare än normala. Det spred exekveringen av kärnor lika över alla tillgängliga CPU-kärnor som kör flera trådar som körs på flera kärnor. Den stöder funktioner som att fylla kanter med värde, fylla kantspegel, ställa in justeringen, komma åt bildpixlar, tillämpa filter på bilder och så vidare.
Bildtillägg via C++
Video++-biblioteket med öppen källkod har tillhandahållit komplett funktionalitet för att lägga till bilder med hjälp av pixelvis filter. Den erbjuder en uppsättning generiska objekt och rutiner som gör det möjligt att snabbt skriva effektiva implementeringar av enkla filter. Många bildbehandlingsfilter är enkla funktioner som fyller pixlar med beräknade värden, och har således inga beroenden mellan beräkningar för olika pixlar.
Lägg till 2D-bild 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]]);
}
}