Open-Source-C++-Bibliothek für die parallele Bildverarbeitung
Kostenlose C++-API, die generische N-dimensionale Bildcontainer, einen erweiterten Satz von Bildverarbeitungsalgorithmen usw. unterstützt.
Video++ ist eine leistungsstarke Multithreading- und plattformübergreifende C++-Bildbearbeitungs-API, die es Softwareentwicklern ermöglicht, mit Bildern und Videodateien in ihren eigenen C++-Anwendungen zu arbeiten. Die Bibliothek ist sehr einfach zu handhaben und wurde unter Ausnutzung der neuen Features von C++11/C++14 entwickelt. Die Hauptidee hinter Video++ ist es, ein Bildverarbeitungs-Framework von Grund auf neu zu gestalten, indem der neue C++-Standard genutzt wird.
Ein großartiges Feature der Video++ Bibliothek ist die einfache Definition von parallelen Bildverarbeitungskernen, die bis zu 32 mal schneller laufen als die naive, nicht optimierte Version. Die Bibliothek enthält einige wichtige Funktionen wie generische N-dimensionale Bildcontainer, erweiterte Algorithmen zur Bildverarbeitung, Füllfarbe, besseres Speichermanagement, Grenzziehung, Verwendung von 3D-Unterimages und vieles mehr.
Die Bibliothek hat eine nützliche Funktion für den Zugriff auf die Bildcontainer, die Zugriff auf den Pixelpuffer und auf andere Informationen bieten, die zur Bearbeitung des Bildes nützlich sind. Es bietet auch Interoperabilität zu openCV und unterstützt explizite Konvertierungen von und zu OpenCV Bildtypen.
Erste Schritte mit Video++
Bitte verwenden Sie den folgenden Befehl für eine vollständige Installation. Das Video++ ist nur Header, um auf alle notwendigen Funktionen zugreifen zu können, müssen Sie den vpp.h-Header einschließen. Sie müssen außerdem Eigen3 und Boost auf Ihrem System installieren, bevor Sie Video++ installieren.
Video++ über den Befehl git installieren
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Parallele Bildverarbeitung über C++ Bibliothek
Die Open Source Video++ Bibliothek erlaubt es Software-Entwicklern, Kernel für die Verarbeitung von parallelen Images mit C++ Befehlen zu definieren. Das Große ist, dass die Kernel 32 mal schneller laufen können als normale. Es verteilt die Kernelausführung auf alle verfügbaren CPU-Kerne, die mehrere Threads auf mehreren Kernen laufen lassen. Es unterstützt Funktionen wie das Füllen von Rändern mit Wert, das Befüllen von Grenzspiegeln, die Einstellung der Ausrichtung, den Zugriff auf Bildpixel, das Anwenden von Filtern auf Bildern usw.
Bildzusatz über C++
Die Open Source Video++ Bibliothek hat vollständige Funktionalität für das Hinzufügen von Bildern mit pixelweisem Filter bereitgestellt. Es bietet eine Reihe von generischen Objekten und Routinen, die es erlauben, effiziente Implementierungen einfacher Filter schnell zu schreiben. Viele Bildverarbeitungsfilter sind einfache Funktionen, die Pixel mit berechneten Werten füllen und somit keine Abhängigkeiten zwischen Berechnungen verschiedener Pixel aufweisen.
Füge 2D Image über 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]]);
}
}