কম্পিউটার টিউটোরিয়াল

OpenCV-এ C++ ব্যবহার করে রঙ সনাক্ত করা

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

আপনি যদি রুমের আলো বা ব্যাকগ্রাউন্ড রঙ পরিবর্তন করেন, তবে রঙ সনাক্তকরণে উল্লেখযোগ্য প্রভাব পড়বে।

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;
}

আউটপুট

OpenCV-এ C++ ব্যবহার করে রঙ সনাক্ত করা

  1. OpenCV-এ C++ ব্যবহার করে রেখা আঁকা

  2. OpenCV-এ C++ ব্যবহার করে সিঙ্গেল চ্যানেল ইমেজের পিক্সেল মান পড়া

  3. OpenCV-এ C++ ব্যবহার করে কালার স্পেস কনভার্ট করা

  4. OpenCV-এ C++ ব্যবহার করে ইমেজের চ্যানেল সংখ্যা গণনা করা