কম্পিউটার

সি++ এ ওপেনসিভি ব্যবহার করে রঙটি কীভাবে সনাক্ত করবেন?


আমরা বুঝতে পারব কিভাবে নির্দিষ্ট রঙ সনাক্ত করতে হয় এবং রঙের উপর ভিত্তি করে অবজেক্ট ট্র্যাক করতে হয়। রঙ সনাক্তকরণ এবং রঙ সনাক্তকরণ ভিত্তিক ট্র্যাকিং সিস্টেমের কার্যকারিতা পরিবেশ নির্ভর।

আপনি যদি ঘরের আলো পরিবর্তন করেন বা আপনি যদি পটভূমির রঙ পরিবর্তন করেন তবে রঙ সনাক্তকরণে উল্লেখযোগ্য প্রভাব পড়বে৷

নিম্নলিখিত প্রোগ্রামটি দেখায় কিভাবে C++ এ OpenCV ব্যবহার করে রঙ সনাক্ত করতে হয়।

উদাহরণ

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
   VideoCapture video_load(0);//capturing video from default camera//
   namedWindow("Adjust");//declaring window to show the image//
   int Hue_Lower_Value = 0;//initial hue value(lower)//
   int Hue_Lower_Upper_Value = 22;//initial hue value(upper)//
   int Saturation_Lower_Value = 0;//initial saturation(lower)//
   int Saturation_Upper_Value = 255;//initial saturation(upper)//
   int Value_Lower = 0;//initial value (lower)//
   int Value_Upper = 255;//initial saturation(upper)//
   createTrackbar("Hue_Lower", "Adjust", &Hue_Lower_Value, 179);//track-bar for lower hue//
   createTrackbar("Hue_Upper", "Adjust", &Hue_Lower_Upper_Value, 179);//track-bar for lower-upper hue//
   createTrackbar("Sat_Lower", "Adjust", &Saturation_Lower_Value, 255);//track-bar for lower saturation//
   createTrackbar("Sat_Upper", "Adjust", &Saturation_Upper_Value, 255);//track-bar for higher saturation//
   createTrackbar("Val_Lower", "Adjust", &Value_Lower, 255);//track-bar for lower value//
   createTrackbar("Val_Upper", "Adjust", &Value_Upper, 255);//track-bar for upper value//
   while (1) {
      Mat actual_Image;//matrix to load actual image//
      bool temp = video_load.read(actual_Image);//loading actual image to matrix from video stream//
      Mat convert_to_HSV;//declaring a matrix to store converted image//
      cvtColor(actual_Image, convert_to_HSV, COLOR_BGR2HSV);//converting BGR image to HSV and storing it in convert_to_HSV matrix//
      Mat detection_screen;//declaring matrix for window where object will be detected//
      inRange(convert_to_HSV,Scalar(Hue_Lower_Value,Saturation_Lower_Value, Value_Lower),Scalar(Hue_Lower_Upper_Value,Saturation_Upper_Value, Value_Upper), detection_screen);//applying track-bar modified value of track-bar//
      erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological opening for removing small objects from foreground//
      dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological opening for removing small object from foreground//
      dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological closing for filling up small holes in foreground//
      erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological closing for filling up small holes in foreground//
      imshow("Threesholded Image", detection_screen);//showing detected object//
      imshow("Original", actual_Image);//showing actual image//
      if (waitKey(30) == 27){ //if esc is press break the loop//
         break;
      }
   }
   return 0;
}

আউটপুট

সি++ এ ওপেনসিভি ব্যবহার করে রঙটি কীভাবে সনাক্ত করবেন?


  1. কিভাবে C++ ব্যবহার করে OpenCV-এ একটি লাইন আঁকবেন?

  2. সি++ ব্যবহার করে ওপেনসিভিতে একটি একক চ্যানেল চিত্রের পিক্সেল মান কীভাবে পড়তে হয়?

  3. সি++ ব্যবহার করে ওপেনসিভিতে রঙের স্থানগুলি কীভাবে রূপান্তর করবেন?

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