আমরা বুঝব কিভাবে নির্দিষ্ট রঙ সনাক্ত করা যায় এবং রঙের ভিত্তিতে অবজেক্ট ট্র্যাক করা যায়। রঙ সনাক্তকরণ এবং রঙ ভিত্তিক ট্র্যাকিং সিস্টেমের পারফরমেন্স এনভায়রনমেন্ট-নির্ভর।
আপনি যদি রুমের আলো বা ব্যাকগ্রাউন্ড রঙ পরিবর্তন করেন, তবে রঙ সনাক্তকরণে উল্লেখযোগ্য প্রভাব পড়বে।
OpenCV-এ C++ ব্যবহার করে রঙ সনাক্ত করার প্রোগ্রাম
#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); // ডিফল্ট ক্যামেরা থেকে ভিডিও ক্যাপচার
namedWindow("Adjust"); // ইমেজ দেখানোর জন্য উইন্ডো
int Hue_Lower_Value = 0; // Hue-এর প্রাথমিক নিম্ন মান
int Hue_Lower_Upper_Value = 22; // Hue-এর প্রাথমিক উপরের মান
int Saturation_Lower_Value = 0; // Saturation-এর প্রাথমিক নিম্ন মান
int Saturation_Upper_Value = 255; // Saturation-এর প্রাথমিক উপরের মান
int Value_Lower = 0; // Value-এর প্রাথমিক নিম্ন মান
int Value_Upper = 255; // Value-এর প্রাথমিক উপরের মান
createTrackbar("Hue_Lower", "Adjust", &Hue_Lower_Value, 179); // Hue নিম্ন সীমার জন্য ট্র্যাকবার
createTrackbar("Hue_Upper", "Adjust", &Hue_Lower_Upper_Value, 179); // Hue উপরের সীমার জন্য ট্র্যাকবার
createTrackbar("Sat_Lower", "Adjust", &Saturation_Lower_Value, 255); // Saturation নিম্ন সীমার জন্য ট্র্যাকবার
createTrackbar("Sat_Upper", "Adjust", &Saturation_Upper_Value, 255); // Saturation উপরের সীমার জন্য ট্র্যাকবার
createTrackbar("Val_Lower", "Adjust", &Value_Lower, 255); // Value নিম্ন সীমার জন্য ট্র্যাকবার
createTrackbar("Val_Upper", "Adjust", &Value_Upper, 255); // Value উপরের সীমার জন্য ট্র্যাকবার
while (1) {
Mat actual_Image; // আসল ইমেজ লোড করার জন্য ম্যাট্রিক্স
bool temp = video_load.read(actual_Image); // ভিডিও স্ট্রিম থেকে আসল ইমেজ ম্যাট্রিক্সে লোড
Mat convert_to_HSV; // রূপান্তরিত ইমেজ সংরক্ষণের জন্য ম্যাট্রিক্স
cvtColor(actual_Image, convert_to_HSV, COLOR_BGR2HSV); // BGR ইমেজ HSV-এ রূপান্তর
Mat detection_screen; // অবজেক্ট সনাক্ত হবে সে উইন্ডোর জন্য ম্যাট্রিক্স
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); // ট্র্যাকবার মান প্রয়োগ
erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5))); // মর্ফোলজিক্যাল ওপেনিং
dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5))); // মর্ফোলজিক্যাল ওপেনিং
dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5))); // মর্ফোলজিক্যাল ক্লোজিং
erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5))); // মর্ফোলজিক্যাল ক্লোজিং
imshow("Threesholded Image", detection_screen); // সনাক্ত অবজেক্ট দেখানো
imshow("Original", actual_Image); // আসল ইমেজ দেখানো
if (waitKey(30) == 27) { // ESC চাপলে লুপ ব্রেক
break;
}
}
return 0;
}
আউটপুট
