Βιβλιοθήκη ανοιχτού κώδικα C++ για παράλληλη επεξεργασία εικόνας
Δωρεάν C++ API που υποστηρίζει γενικά κοντέινερ εικόνων Ν-διάστάσεων, βελτιωμένο σύνολο αλγορίθμων επεξεργασίας εικόνας και ούτω καθεξής.
Το Video++ είναι ένα ισχυρό API επεξεργασίας εικόνων C++ πολλαπλών νημάτων και πολλαπλών πλατφορμών που επιτρέπει στους προγραμματιστές λογισμικού να εργάζονται με εικόνες και αρχεία βίντεο μέσα στις δικές τους εφαρμογές C++. Η βιβλιοθήκη είναι πολύ εύκολη στον χειρισμό και έχει αναπτυχθεί αξιοποιώντας τις νέες δυνατότητες της C++11/C++14. Η κύρια ιδέα πίσω από το Video++ είναι ο επανασχεδιασμός από την αρχή ενός πλαισίου επεξεργασίας εικόνας αξιοποιώντας το νέο πρότυπο C++.
Ένα μεγάλο χαρακτηριστικό της βιβλιοθήκης Video++ είναι ο εύκολος ορισμός των παράλληλων πυρήνων επεξεργασίας εικόνων που τρέχουν έως και 32 φορές πιο γρήγορα από την αφελής μη βελτιστοποιημένη έκδοση. Η βιβλιοθήκη έχει συμπεριλάβει αρκετά σημαντικά χαρακτηριστικά όπως τα γενόσημα δοχεία εικόνας, ένα βελτιωμένο σύνολο αλγορίθμων επεξεργασίας εικόνας, το χρώμα πλήρωσης, τη διαχείριση μνήμης, τη συμπλήρωση των συνόρων, τη χρήση 3D υπο-images.
Η βιβλιοθήκη παρέχει ένα χρήσιμο χαρακτηριστικό για την πρόσβαση στα δοχεία εικόνας που προσφέρουν πρόσβαση στο buffer pixel και σε άλλη πληροφορία χρήσιμη για την επεξεργασία της εικόνας. Παρέχει επίσης διαλειτουργικότητα σε openCV και υποστηρίζει ρητές μετατροπές από και προς OpenCV τύπους εικόνων.
Ξεκινώντας με το Video++
Χρησιμοποιήστε την ακόλουθη εντολή για πλήρη εγκατάσταση. Το Video++ είναι μόνο κεφαλίδα, επομένως για να έχετε πρόσβαση σε όλες τις απαραίτητες δυνατότητες, πρέπει να συμπεριλάβετε την κεφαλίδα vpp.h. Πρέπει επίσης να λάβετε Eigen3 και Boost στο σύστημά σας πριν εγκαταστήσετε το Video++.
Εγκατάσταση βίντεο + + μέσω εντολών 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
Παράλληλη επεξεργασία εικόνας μέσω βιβλιοθήκης C++
Η βιβλιοθήκη Video++ επιτρέπει στους προγραμματιστές λογισμικού να ορίσουν πυρήνες για την επεξεργασία παράλληλων εικόνων χρησιμοποιώντας C++ εντολές. Το σημαντικό είναι ότι οι πυρήνες μπορούν να τρέξουν 32 φορές πιο γρήγορα από τους κανονικούς. Εξάπλωσε εξίσου την εκτέλεση των πυρήνων πάνω σε όλους τους διαθέσιμους πυρήνες CPU που τρέχουν πολλά νήματα σε διάφορους πυρήνες. Υποστηρίζει χαρακτηριστικά όπως η συμπλήρωση των συνόρων με αξία, ο καθορισμός της ευθυγράμμισης, η πρόσβαση σε pixels εικόνας, η εφαρμογή φίλτρων σε εικόνες και ούτω καθεξής.
Προσθήκη εικόνας μέσω C++
Η βιβλιοθήκη Video++ παρέχει πλήρη λειτουργικότητα για την προσθήκη εικόνων χρησιμοποιώντας φίλτρο pixel. Προσφέρει ένα σύνολο γενικών αντικειμένων και ρουτίνας που επιτρέπουν τη γρήγορη γραφή αποτελεσματικών εφαρμογών απλών φίλτρων. Πολλά φίλτρα επεξεργασίας εικόνας είναι απλές συναρτήσεις που γεμίζουν pixels με υπολογιστικές τιμές, με αποτέλεσμα να μην υπάρχουν εξαρτήσεις μεταξύ υπολογισμών σε διαφορετικά pixels.
Προσθήκη εικόνας 2D μέσω 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]]);
}
}