Paralel Şəkil Emalı üçün Açıq Mənbə C++ Kitabxanası
Ümumi N-ölçülü şəkil konteynerlərini, təkmilləşdirilmiş təsvir emalı alqoritmləri dəstini və s. dəstəkləyən pulsuz C++ API.
Video++, proqram tərtibatçılarına öz C++ proqramlarında şəkillər və video faylları ilə işləməyə imkan verən güclü çox yivli və çarpaz platformalı C++ şəkil redaktə API-sidir. Kitabxananı idarə etmək çox asandır və C++11/C++14-ün yeni xüsusiyyətlərindən istifadə etməklə hazırlanmışdır. Video++ proqramının əsas ideyası yeni C++ standartından istifadə edərək təsvirin işlənməsi çərçivəsini sıfırdan yenidən dizayn etməkdir.
Video++ kitabxanasının gözəl xüsusiyyətlərindən biri sadəlövh, optimallaşdırılmamış versiya ilə müqayisədə 32 dəfəyə qədər sürətlə işləyən paralel təsvir emal nüvələrinin asan tərifidir. Kitabxana ümumi N-ölçülü təsvir konteynerləri, təsvirin işlənməsi alqoritmlərinin təkmilləşdirilmiş dəsti, rəng doldurma, yaddaşın daha yaxşı idarə edilməsi, sərhədi doldurma, 3D alt-şəkillərdən istifadə və sair kimi bir sıra vacib funksiyaları özündə cəmləşdirir.
Kitabxana piksel buferinə və təsviri emal etmək üçün faydalı olan başqa bir məlumat parçasına çıxış təklif edən şəkil konteynerlərinə daxil olmaq üçün faydalı xüsusiyyət təqdim etmişdir. O, həmçinin openCV ilə qarşılıqlı əlaqəni təmin edir və OpenCV təsvir növlərinə və onlardan açıq-aşkar çevrilmələri dəstəkləyir.
Video++ ilə işə başlamaq
Tam quraşdırma üçün aşağıdakı əmrdən istifadə edin. Video++ yalnız başlıqdır, ona görə də bütün lazımi funksiyalara daxil olmaq üçün vpp.h başlığını daxil etməlisiniz. Siz həmçinin Video++ quraşdırmadan əvvəl sisteminizdə Eigen3 və Boost əldə etməyi tələb edirsiniz.
Git əmri ilə Video++ quraşdırın
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++ Kitabxanası vasitəsilə Paralel Şəkil Emalı
Açıq mənbəli Video++ kitabxanası proqram tərtibatçılarına C++ əmrlərindən istifadə edərək paralel şəkilləri emal etmək üçün ləpələri müəyyən etməyə imkan verir. Ən yaxşısı odur ki, nüvələr normaldan 32 dəfə daha sürətli işləyə bilir. O, ləpələrin icrasını bir neçə nüvədə işləyən bir neçə iplə işləyən bütün mövcud CPU nüvələri üzərində bərabər şəkildə yaydı. O, sərhədləri dəyərlə doldurmaq, haşiyə güzgüsünü doldurmaq, hizalanma qurmaq, şəkil piksellərinə daxil olmaq, şəkillərə filtrlər tətbiq etmək və s. kimi xüsusiyyətləri dəstəkləyir.
C++ vasitəsilə Şəkil əlavəsi
Açıq mənbəli Video++ kitabxanası piksel-müdrik filtrdən istifadə edərək şəkillər əlavə etmək üçün tam funksionallıq təmin etmişdir. O, sadə filtrlərin səmərəli tətbiqlərini tez yazmağa imkan verən ümumi obyektlər və rutinlər dəsti təklif edir. Bir çox görüntü emal filtrləri pikselləri hesablanmış dəyərlərlə dolduran sadə funksiyalardır və beləliklə, müxtəlif piksellərlə bağlı hesablamalar arasında heç bir asılılıq yoxdur.
C++ vasitəsilə 2D Şəkil əlavə edin
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]]);
}
}