Atvērtā pirmkoda C++ bibliotēka paralēlai attēlu apstrādei
Bezmaksas C++ API, kas atbalsta vispārīgus N dimensiju attēlu konteinerus, uzlabotu attēlu apstrādes algoritmu kopu un tā tālāk.
Video++ ir jaudīga daudzpavedienu un starpplatformu C++ attēlu rediģēšanas API, kas programmatūras izstrādātājiem ļauj strādāt ar attēliem un video failiem savās C++ lietojumprogrammās. Bibliotēka ir ļoti viegli apstrādājama, un tā ir izstrādāta, izmantojot jaunās C++11/C++14 iespējas. Video++ galvenā ideja ir no jauna pārveidot attēlu apstrādes sistēmu, izmantojot jaunā C++ standarta priekšrocības.
Viena no lieliskajām Video++ bibliotēkas iezīmēm ir vienkārša paralēlo attēlu apstrādes kodolu definīcija, kas darbojas līdz pat 32 reizēm ātrāk nekā naivā neoptimizētā versija. Bibliotēkā ir iekļautas vairākas svarīgas funkcijas, piemēram, vispārīgi N-dimensiju attēlu konteineri, uzlabots attēlu apstrādes algoritmu komplekts, aizpildījuma krāsa, labāka atmiņas pārvaldība, aizpildījuma robeža, 3D apakšattēlu izmantošana un daudz kas cits.
Bibliotēka ir nodrošinājusi noderīgu līdzekli, lai piekļūtu attēlu konteineriem, kas piedāvā piekļuvi pikseļu buferim un citai attēla apstrādei noderīgai informācijai. Tas arī nodrošina savietojamību ar openCV un atbalsta nepārprotamas konvertēšanas uz un no OpenCV attēlu veidiem.
Darba sākšana ar Video++
Lūdzu, izmantojiet šo komandu, lai pabeigtu instalēšanu. Video++ ir tikai galvenes, tāpēc, lai piekļūtu visām nepieciešamajām funkcijām, ir jāiekļauj vpp.h galvene. Pirms Video++ instalēšanas savā sistēmā ir jāiegūst arī Eigen3 un Boost.
Instalējiet Video++, izmantojot git komandu
git clone https://github.com/matt-42/vpp.git
cd vpp
./install.sh your_install_prefix # Install iod and vpp in a given prefix
Paralēlā attēlu apstrāde, izmantojot C++ bibliotēku
Atvērtā pirmkoda Video++ bibliotēka ļauj programmatūras izstrādātājiem definēt kodolus paralēlu attēlu apstrādei, izmantojot C++ komandas. Lieliski ir tas, ka kodoli var darboties 32 reizes ātrāk nekā parastie. Tas vienādi izplatīja kodolu izpildi visos pieejamos CPU kodolos, kuros darbojas vairāki pavedieni, kas darbojas vairākos kodolos. Tā atbalsta tādas funkcijas kā apmaļu aizpildīšana ar vērtību, apmales spoguļa aizpildīšana, līdzinājuma iestatīšana, piekļuve attēla pikseļiem, filtru lietošana attēliem utt.
Attēlu pievienošana, izmantojot C++
Atvērtā pirmkoda Video++ bibliotēka ir nodrošinājusi pilnīgu funkcionalitāti attēlu pievienošanai, izmantojot pikseļu filtru. Tas piedāvā vispārīgu objektu un rutīnu kopu, kas ļauj ātri ierakstīt efektīvus vienkāršu filtru ieviešanu. Daudzi attēlu apstrādes filtri ir vienkāršas funkcijas, kas aizpilda pikseļus ar aprēķinātām vērtībām, tādējādi neradot atkarību starp aprēķiniem attiecībā uz dažādiem pikseļiem.
Pievienojiet 2D attēlu, izmantojot 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]]);
}
}