Open Source Knihovna C++ pro paralelní zpracování obrazu
Bezplatné rozhraní C++ API, které podporuje obecné kontejnery N-dimenzionálních obrázků, vylepšenou sadu algoritmů pro zpracování obrázků a tak dále.
Video++ je výkonné vícevláknové a multiplatformní rozhraní C++ pro úpravu obrázků API, které umožňuje vývojářům softwaru pracovat s obrázky a videosoubory v rámci jejich vlastních aplikací C++. Knihovna se velmi snadno ovládá a je vyvinuta s využitím nových funkcí C++11/C++14. Hlavní myšlenkou Video++ je přepracovat od začátku rámec pro zpracování obrazu s využitím nového standardu C++.
Jednou ze skvělých vlastností knihovny Video++ je snadná definice jader pro paralelní zpracování obrazu, která běží až 32krát rychleji než naivní neoptimalizovaná verze. Knihovna obsahuje několik důležitých funkcí, jako jsou generické kontejnery N-dimenzionálních obrázků, vylepšená sada algoritmů pro zpracování obrázků, barva výplně, lepší správa paměti, ohraničení výplně, použití 3D dílčích obrázků a mnoho dalších.
Knihovna poskytla užitečnou funkci pro přístup ke kontejnerům obrázků, které nabízejí přístup k vyrovnávací paměti pixelů a k dalším informacím užitečným pro zpracování obrázku. Poskytuje také interoperabilitu s openCV a podporuje explicitní převody do az typů obrázků OpenCV.
Začínáme s Video++
Pro kompletní instalaci použijte prosím následující příkaz. Video++ je pouze hlavička, takže pro přístup ke všem nezbytným funkcím musíte zahrnout hlavičku vpp.h. Před instalací Video++ také musíte mít na svém systému Eigen3 a Boost.
Nainstalujte Video++ pomocí příkazu 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
Paralelní zpracování obrazu prostřednictvím knihovny C++
Open source knihovna Video++ umožňuje vývojářům softwaru definovat jádra pro zpracování paralelních obrázků pomocí příkazů C++. Skvělé je, že jádra mohou běžet 32krát rychleji než ta normální. Rovnoměrně rozložil provádění jader na všechna dostupná jádra CPU, na kterých běží několik vláken běžících na několika jádrech. Podporuje funkce jako vyplnění okrajů hodnotou, vyplnění okrajového zrcadla, nastavení zarovnání, přístup k obrazovým bodům, použití filtrů na obrazy a tak dále.
Přidání obrázků přes C++
Open source knihovna Video++ poskytuje kompletní funkčnost pro přidávání obrázků pomocí pixel-wise filtru. Nabízí sadu generických objektů a rutin, které umožňují rychlé psaní efektivních implementací jednoduchých filtrů. Mnoho filtrů pro zpracování obrazu jsou jednoduché funkce, které vyplňují obrazové body vypočítanými hodnotami, takže mezi výpočty ohledně různých obrazových bodů nejsou žádné závislosti.
Přidat 2D obrázek přes 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]]);
}
}