Libreria C++ open source per l'elaborazione parallela delle immagini
API C++ gratuita che supporta contenitori di immagini N-dimensionali generici, set avanzato di algoritmi di elaborazione delle immagini e così via.
Video++ è una potente API di editing di immagini C++ multi-thread e multipiattaforma che consente agli sviluppatori di software di lavorare con immagini e file video all'interno delle proprie applicazioni C++. La libreria è molto facile da gestire ed è sviluppata sfruttando le nuove funzionalità di C++11/C++14. L'idea principale alla base di Video++ è di riprogettare da zero un framework di elaborazione delle immagini sfruttando il nuovo standard C++.
Una grande caratteristica della libreria Video è la facile definizione di kernel di elaborazione immagine paralleli che funzionano fino a 32 volte più velocemente della versione non ottimizzata na ve. La biblioteca ha incluso diverse caratteristiche importanti come i contenitori generici di immagini N-dimensionali, un insieme migliorato di algoritmi di elaborazione delle immagini, colore di riempimento, migliore gestione della memoria, riempimento del bordo, uso di sotto-immagini 3D e molti altri.
La libreria ha fornito una funzione utile per accedere ai contenitori dell'immagine che offrono l'accesso al buffer pixel e ad un'altra informazione utile per elaborare l'immagine. Fornisce inoltre interoperabilità a openCV e supporta conversioni esplicite da e verso OpenCV tipi di immagine.
Iniziare con Video++
Utilizzare il comando seguente per un'installazione completa. Il Video++ è solo intestazione, quindi per accedere a tutte le funzionalità necessarie, è necessario includere l'intestazione vpp.h. Devi anche avere Eigen3 e Boost sul tuo sistema prima di installare Video++.
Installare Video tramite 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
Elaborazione parallela delle immagini tramite la libreria C++
La libreria Video open source consente agli sviluppatori di software di definire kernel per l'elaborazione di immagini parallele utilizzando C++ comandi. La cosa bella è che i kernel possono correre 32 volte più veloce di quelli normali. Si diffonde ugualmente l'esecuzione di kernel su tutti i core CPU disponibili che eseguono diversi thread in esecuzione su diversi core. Supporta caratteristiche come riempimento bordi con valore, riempimento specchio di frontiera, impostazione l'allineamento, l'accesso pixel immagine, l'applicazione di filtri sulle immagini, e così via.
Aggiunta di immagini tramite C++
La libreria Video open source ha fornito funzionalità complete per aggiungere immagini utilizzando un filtro pixel-wise. Offre una serie di oggetti generici e routine che permettono di scrivere rapidamente implementazioni efficienti di filtri semplici. Molti filtri di elaborazione delle immagini sono semplici funzioni che riempiono i pixel con valori calcolati, senza dipendenze tra le computazioni rispetto ai diversi pixel.
Aggiungere 2D Immagine 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]]);
}
}