Biblioteca C++ de código abierto para el procesamiento paralelo de imágenes
API de C++ gratuita que admite contenedores de imágenes N-dimensionales genéricos, un conjunto mejorado de algoritmos de procesamiento de imágenes, etc.
Video++ es una potente API de edición de imágenes C++ multiproceso y multiplataforma que permite a los desarrolladores de software trabajar con imágenes y archivos de video dentro de sus propias aplicaciones C++. La librería es muy fácil de manejar y está desarrollada aprovechando las nuevas características de C++11/C++14. La idea principal detrás de Video++ es rediseñar desde cero un marco de procesamiento de imágenes aprovechando el nuevo estándar C++.
Una gran característica de la biblioteca de Video es la definición fácil de los núcleos de procesamiento de imágenes paralelos que funcionan hasta 32 veces más rápido que la versión no optimizada na ve. La biblioteca ha incluido varias características importantes como los contenedores de imágenes genéricos N-dimensionales, un conjunto mejorado de algoritmos de procesamiento de imágenes, color de llenado, frontera, uso de subimágenes 3D, y muchos más.
La biblioteca ha proporcionado una característica útil para acceder a los contenedores de imagen que ofrecen acceso al buffer de píxeles y a otra información útil para procesar la imagen. También proporciona interoperabilidad a openCV y apoya conversiones explícitas a OpenCV tipos de imagen.
Primeros pasos con Video++
Utilice el siguiente comando para una instalación completa. El Video ++ es solo de encabezado, por lo que para acceder a todas las funciones necesarias, debe incluir el encabezado vpp.h. También necesita obtener Eigen3 y Boost en su sistema antes de instalar Video++.
Instalar Video mediante comando 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
Procesamiento de imágenes en paralelo a través de la biblioteca C++
La biblioteca de Video de código abierto permite a los desarrolladores de software definir kernels para procesar imágenes paralelas utilizando C++ comandos. Lo bueno es que los kernels pueden correr 32 veces más rápido que los normales. También extendió la ejecución de los núcleos de la CPU disponibles sobre todos los núcleos de la CPU disponibles que corren varios hilos en varios núcleos. Soporta características como llenar fronteras con valor, llenar espejo fronterizo, establecer la alineación, acceder a píxeles de imagen, aplicar filtros sobre imágenes, etc.
Adición de imágenes a través de C++
La biblioteca de Video de código abierto ha proporcionado una completa funcionalidad para añadir imágenes con filtro de píxeles. Ofrece un conjunto de objetos genéricos y rutinas que permiten escribir aplicaciones eficientes de filtros simples rápidamente. Muchos filtros de procesamiento de imágenes son funciones simples que llenan píxeles con valores computados, lo que no presenta dependencias entre los cálculos relativos a diferentes píxeles.
Añadir la imagen 2D a través de 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]]);
}
}