কম্পিউটার

কিভাবে C++ ব্যবহার করে ওপেনসিভি-তে বিভিন্ন চ্যানেলে ছবি বিভক্ত করবেন?


একটি RGB ছবিতে তিনটি চ্যানেল আছে- লাল, সবুজ এবং নীল। রঙের স্থান যেখানে লাল, সবুজ এবং নীল চ্যানেলগুলি চিত্রগুলিকে উপস্থাপন করে তাকে RGB রঙের স্থান বলা হয়। OpenCV-এ, RGB-এর পরিবর্তে BGR সিকোয়েন্স ব্যবহার করা হয়। এর অর্থ হল প্রথম চ্যানেলটি নীল, দ্বিতীয় চ্যানেলটি সবুজ এবং তৃতীয় চ্যানেলটি লাল। একটি RGB চিত্রকে বিভিন্ন চ্যানেলে বিভক্ত করতে, আমাদের 3টি চ্যানেলের একটি ম্যাট্রিক্স সংজ্ঞায়িত করতে হবে। আমরা 'Mat different_channels[3]' ব্যবহার করি একটি তিন-চ্যানেল ম্যাট্রিক্স সংজ্ঞায়িত করতে।

এরপর, আমরা OpenCV 'split()' ফাংশন ব্যবহার করে লোড করা ছবিকে বিভক্ত করি। এই ফাংশনের বিন্যাস হল 'বিভক্ত (উৎস ম্যাট্রিক্স, গন্তব্য ম্যাট্রিক্স)'। এই ফাংশন সোর্স ম্যাট্রিক্সের ছবিগুলিকে চ্যানেলের ইমেজে বিভক্ত করে এবং গন্তব্য ম্যাট্রিক্সে সেভ করে। এই লাইনটি কাজ করছে – 'split(myImage, different_channels);'

বিভক্ত ফাংশন ইতিমধ্যেই 'ভিন্ন_চ্যানেল' ম্যাট্রিক্সে নীল, সবুজ এবং লাল চ্যানেল লোড করেছে। নিম্নলিখিত লাইনগুলি ব্যবহার করে, আমরা বিভিন্ন চ্যানেলে সংরক্ষিত ছবিগুলিকে নতুন ম্যাট্রিসে লোড করেছি৷

<প্রে>ম্যাট বি =ভিন্ন_চ্যানেল[0];//নীল চ্যানেল লোড হচ্ছে//ম্যাট জি =ভিন্ন_চ্যানেল[1];//সবুজ চ্যানেল লোড হচ্ছে//ম্যাট আর =ভিন্ন_চ্যানেল[2];//লাল চ্যানেল লোড হচ্ছে/// প্রাক>

এবং অবশেষে আমরা নিম্নলিখিত লাইনগুলি −

ব্যবহার করে প্রতিটি চ্যানেলকে আলাদাভাবে দেখিয়েছি
imshow("ব্লু চ্যানেল",b);//ব্লু চ্যানেল দেখানো হচ্ছে//imshow("গ্রিন চ্যানেল",g);//সবুজ চ্যানেল দেখানো হচ্ছে//imshow("লাল চ্যানেল",r);// দেখানো হচ্ছে লাল চ্যানেল//

এইভাবে আমরা একটি ছবিকে এর চ্যানেলে বিভক্ত করতে পারি।

নিম্নলিখিত প্রোগ্রামটি একটি RGB চিত্রকে নীল, সবুজ এবং লাল চ্যানেলে বিভক্ত করে।

উদাহরণ

#include#include
#include
নেমস্পেস সিভি ব্যবহার করে;নামস্পেস std;int main(int argc,const char** argv) ব্যবহার করে { ম্যাট myImage;//ছবি লোড করার জন্য একটি ম্যাট্রিক্স ঘোষণা করা// Mat different_Channels[3];//তিনটি চ্যানেলের সাথে একটি ম্যাট্রিক্স ঘোষণা করা// myImage=imread("RGB.png");// myImage ম্যাট্রিক্সে ছবি লোড করা হচ্ছে // বিভক্ত(myImage, different_Channels);//ছবিগুলিকে 3টি ভিন্ন চ্যানেলে বিভক্ত করা// Mat b =different_channels[0];//লোড হচ্ছে নীল চ্যানেল// Mat g =different_channels[1];//লোড হচ্ছে সবুজ চ্যানেল// Mat r =different_channels[2];//লোড হচ্ছে লাল চ্যানেল// imshow("ব্লু চ্যানেল",b);//ব্লু চ্যানেল দেখানো হচ্ছে// imshow("গ্রিন চ্যানেল",g);//সবুজ চ্যানেল দেখানো হচ্ছে// imshow( "Red Channel",r);//দেখানো লাল চ্যানেল// imshow("Actual_Image", myImage);//প্রকৃত ছবি দেখানো হচ্ছে// waitKey(0);//কী স্ট্রোকের জন্য অপেক্ষা করুন অলউইন্ডোজ();//সব বন্ধ করা হচ্ছে windows// return 0;}

আউটপুট

কিভাবে C++ ব্যবহার করে ওপেনসিভি-তে বিভিন্ন চ্যানেলে ছবি বিভক্ত করবেন?


  1. কিভাবে C++ ব্যবহার করে OpenCV তে একটি বাইনারি ইমেজ উল্টাতে হয়?

  2. কিভাবে C++ ব্যবহার করে OpenCV তে বাইনারি ইমেজ তৈরি করবেন?

  3. কিভাবে C++ ব্যবহার করে ওপেনসিভি-তে বিভিন্ন চ্যানেলে ছবি বিভক্ত করবেন?

  4. C++ ব্যবহার করে ওপেনসিভিতে একটি ছবির চ্যানেলের সংখ্যা কীভাবে গণনা করা যায়?