সমান্তরাল চিত্র প্রক্রিয়াকরণের জন্য ওপেন সোর্স C++ লাইব্রেরি
বিনামূল্যের C++ এপিআই যা জেনেরিক এন-ডাইমেনশনাল ইমেজ কনটেইনার, ইমেজ প্রসেসিং অ্যালগরিদমের উন্নত সেট এবং আরও অনেক কিছুকে সমর্থন করে।
ভিডিও++ একটি শক্তিশালী মাল্টি-থ্রেডেড এবং ক্রস-প্ল্যাটফর্ম C++ ইমেজ এডিটিং এপিআই যা সফটওয়্যার ডেভেলপারদের তাদের নিজস্ব C++ অ্যাপ্লিকেশনের মধ্যে ছবি এবং ভিডিও ফাইলের সাথে কাজ করতে সক্ষম করে। লাইব্রেরিটি পরিচালনা করা খুবই সহজ এবং C++11/C++14-এর নতুন বৈশিষ্ট্যগুলির সুবিধা গ্রহণ করে বিকশিত হয়েছে। ভিডিও++ এর পিছনে মূল ধারণাটি হল নতুন C++ স্ট্যান্ডার্ডের সুবিধা নিয়ে একটি ইমেজ প্রসেসিং ফ্রেমওয়ার্ক স্ক্র্যাচ থেকে পুনরায় ডিজাইন করা।
ভিডিও++ লাইব্রেরির একটি দুর্দান্ত বৈশিষ্ট্য হল সমান্তরাল ইমেজ প্রসেসিং কার্নেলের সহজ সংজ্ঞা যা নিষ্পাপ অ-অপ্টিমাইজ করা সংস্করণের চেয়ে 32 গুণ বেশি দ্রুত চলে। লাইব্রেরিতে বেশ কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য অন্তর্ভুক্ত করা হয়েছে যেমন জেনেরিক এন-ডাইমেনশনাল ইমেজ কন্টেনার, ইমেজ প্রসেসিং অ্যালগরিদমের একটি উন্নত সেট, ফিল কালার, ভালো মেমরি ম্যানেজমেন্ট, ফিল বর্ডার, 3D সাব-ইমেজের ব্যবহার এবং আরও অনেক কিছু।
লাইব্রেরিটি ইমেজ কন্টেইনারগুলি অ্যাক্সেস করার জন্য একটি দরকারী বৈশিষ্ট্য প্রদান করেছে যা পিক্সেল বাফার এবং চিত্রটি প্রক্রিয়া করার জন্য দরকারী তথ্যের আরেকটি অংশে অ্যাক্সেস অফার করে। এটি ওপেনসিভিতে আন্তঃঅপারেবিলিটি প্রদান করে এবং ওপেনসিভি ইমেজ প্রকারে এবং থেকে স্পষ্ট রূপান্তর সমর্থন করে।
ভিডিও++ দিয়ে শুরু করা
একটি সম্পূর্ণ ইনস্টলেশনের জন্য নিম্নলিখিত কমান্ড ব্যবহার করুন. ভিডিও++ শুধুমাত্র শিরোলেখ, তাই সমস্ত প্রয়োজনীয় বৈশিষ্ট্যগুলি অ্যাক্সেস করতে, আপনাকে অবশ্যই vpp.h হেডার অন্তর্ভুক্ত করতে হবে। ভিডিও++ ইনস্টল করার আগে আপনাকে আপনার সিস্টেমে Eigen3 এবং বুস্ট পেতে হবে।
গিট কমান্ডের মাধ্যমে ভিডিও++ ইনস্টল করুন
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++ লাইব্রেরির মাধ্যমে সমান্তরাল চিত্র প্রক্রিয়াকরণ
ওপেন সোর্স ভিডিও++ লাইব্রেরি সফটওয়্যার ডেভেলপারদেরকে C++ কমান্ড ব্যবহার করে সমান্তরাল ছবি প্রসেস করার জন্য কার্নেল নির্ধারণ করতে দেয়। দুর্দান্ত জিনিসটি হল যে কার্নেলগুলি স্বাভাবিকের চেয়ে 32 গুণ দ্রুত চলতে পারে। এটি সমানভাবে সমস্ত উপলব্ধ সিপিইউ কোরের উপর কার্নেলের এক্সিকিউশনকে ছড়িয়ে দেয় যা বিভিন্ন কোরে চলমান বিভিন্ন থ্রেড চালায়। এটি মান সহ সীমানা পূরণ, সীমানা আয়না পূরণ, প্রান্তিককরণ সেট করা, চিত্র পিক্সেল অ্যাক্সেস করা, চিত্রগুলিতে ফিল্টার প্রয়োগ করা ইত্যাদি বৈশিষ্ট্যগুলিকে সমর্থন করে।
C++ এর মাধ্যমে ছবি সংযোজন
ওপেন সোর্স ভিডিও++ লাইব্রেরি পিক্সেল-ভিত্তিক ফিল্টার ব্যবহার করে ছবি যোগ করার জন্য সম্পূর্ণ কার্যকারিতা প্রদান করেছে। এটি জেনেরিক অবজেক্ট এবং রুটিনগুলির একটি সেট অফার করে যা সহজ ফিল্টারগুলির দ্রুত কার্যকরীভাবে লেখার অনুমতি দেয়। অনেক ইমেজ প্রসেসিং ফিল্টার হল সাধারণ ফাংশন যা গণনা করা মান দিয়ে পিক্সেল পূরণ করে, এইভাবে বিভিন্ন পিক্সেল সম্পর্কিত গণনার মধ্যে কোন নির্ভরতা নেই।
C++ এর মাধ্যমে 2D ছবি যোগ করুন
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]]);
}
}