کتابخانه منبع باز C++ برای پردازش تصویر موازی
API رایگان C++ که از محفظههای تصویر N بعدی عمومی، مجموعه پیشرفتهای از الگوریتمهای پردازش تصویر و غیره پشتیبانی میکند.
Video++ یک API ویرایش تصویر C++ چند رشته ای و چند پلتفرمی قدرتمند است که توسعه دهندگان نرم افزار را قادر می سازد تا با تصاویر و فایل های ویدئویی در برنامه های C++ خود کار کنند. کار با این کتابخانه بسیار آسان است و با بهره گیری از ویژگی های جدید C++11/C++14 توسعه یافته است. ایده اصلی پشت ویدیو++ طراحی مجدد از ابتدا یک چارچوب پردازش تصویر با استفاده از استاندارد جدید C++ است.
یکی از ویژگیهای عالی کتابخانه Video++، تعریف آسان هستههای پردازش تصویر موازی است که تا 32 برابر سریعتر از نسخه غیربهینهسازی شده ساده کار میکنند. این کتابخانه دارای چندین ویژگی مهم مانند محفظههای تصویر N بعدی، مجموعه پیشرفتهای از الگوریتمهای پردازش تصویر، رنگ پر کردن، مدیریت بهتر حافظه، پر کردن حاشیه، استفاده از تصاویر فرعی سه بعدی و بسیاری موارد دیگر است.
این کتابخانه یک ویژگی مفید برای دسترسی به محفظه های تصویر ارائه کرده است که دسترسی به بافر پیکسل و اطلاعات دیگری را که برای پردازش تصویر مفید است، ارائه می دهد. همچنین قابلیت همکاری برای openCV فراهم می کند و از تبدیل صریح به و از انواع تصویر OpenCV پشتیبانی می کند.
شروع کار با Video++
لطفا از دستور زیر برای نصب کامل استفاده کنید. Video++ فقط هدر است، بنابراین برای دسترسی به تمام ویژگیهای لازم، باید هدر vpp.h را اضافه کنید. همچنین باید Eigen3 و Boost را قبل از نصب Video++ روی سیستم خود دریافت کنید.
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 موجود که چندین رشته در حال اجرا روی چندین هسته اجرا می کنند، پخش می کند. از ویژگی هایی مانند پر کردن مرزها با مقدار، پر کردن آینه حاشیه، تنظیم تراز، دسترسی به پیکسل های تصویر، اعمال فیلتر بر روی تصاویر و غیره پشتیبانی می کند.
افزودن تصویر از طریق C++
کتابخانه متن باز Video++ عملکرد کاملی را برای افزودن تصاویر با استفاده از فیلتر پیکسلی ارائه کرده است. مجموعهای از اشیاء و روالهای عمومی را ارائه میدهد که امکان نوشتن سریع پیادهسازیهای کارآمد فیلترهای ساده را فراهم میکند. بسیاری از فیلترهای پردازش تصویر، توابع ساده ای هستند که پیکسل ها را با مقادیر محاسبه شده پر می کنند، بنابراین هیچ وابستگی بین محاسبات مربوط به پیکسل های مختلف ندارند.
اضافه کردن تصویر دو بعدی از طریق 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]]);
}
}