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

OpenCV Java ব্যবহার করে ইমেজে সম্ভাব্য অবজেক্টের চারপাশে এলিপস ফিট করার পদ্ধতি

আপনি org.opencv.imgproc.Imgproc ক্লাসের fitEllipse() মেথড ব্যবহার করে একটি আকৃতির ওপর এলিপস ফিট করতে পারেন। এই মেথড MatOfPoint2f ক্লাসের একটি অবজেক্ট গ্রহণ করে, দেওয়া পয়েন্ট সেটের জন্য ফিট হোনোর এলিপস ক্যালকুলেট করে এবং একটি RotatedRect অবজেক্ট রিটার্ন করে।

এই ব্যবহার করে আপনি একটি ইমেজে সম্ভাব্য অবজেক্টের চারপাশে এলিপস আঁকতে পারেন। তা করতে:

  • imread() মেথড ব্যবহার করে একটি ইমেজ পড়ুন (Imgproc ক্লাসের)।
  • cvtColor() মেথড ব্যবহার করে এটাকে গ্রে-স্কেল ইমেজে কনভার্ট করুন (Imgproc ক্লাসের)।
  • threshold() মেথড ব্যবহার করে গ্রে ইমেজকে বাইনারি করুন (Imgproc ক্লাসের)।
  • findContours() মেথড ব্যবহার করে ইমেজে কন্টুর খুঁজুন (Imgproc ক্লাসের)।
  • এখন, প্রতিটি কন্টুর ভ্যালু MatOfPoint2f হিসেবে fitEllipse() মেথডে পাস করে সম্ভাব্য কন্টুরের জন্য RotatedRect অবজেক্ট পান।
  • শেষে, ellipse() মেথড ব্যবহার করে সম্ভাব্য আকৃতির চারপাশে এলিপস আঁকুন।

নোট - এলিপস ফিট করার জন্য অবজেক্টে কমপক্ষে পাঁচটি পয়েন্ট থাকতে হবে।

উদাহরণ

import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class FitEllipseExample {
    public static void main(String args[]) throws Exception {
        // OpenCV কোর লাইব্রেরি লোড করা
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // ইমেজের কন্টেন্ট পড়া
        String file = "D:\\Images\\javafx_graphical.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // সোর্স ইমেজকে বাইনারি-তে কনভার্ট
        Mat gray = new Mat(src.rows(), src.cols(), src.type());
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
        Mat binary = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
        Imgproc.threshold(gray, binary, 100, 255, Imgproc.THRESH_BINARY_INV);
        
        // কন্টুর খুঁজা
        List contours = new ArrayList<>();
        Mat hierarchey = new Mat();
        Imgproc.findContours(binary, contours, hierarchey, Imgproc.RETR_TREE,
                Imgproc.CHAIN_APPROX_SIMPLE);
        
        // খালি রেক্ট্যাঙ্গল
        RotatedRect[] rec = new RotatedRect[contours.size()];
        for (int i = 0; i < contours.size(); i++) {
            rec[i] = new RotatedRect();
            if (contours.get(i).rows() > 5) {
                rec[i] = Imgproc.fitEllipse(new MatOfPoint2f(contours.get(i).toArray()));
            }
            Scalar color_elli = new Scalar(190, 0, 0);
            Imgproc.ellipse(src, rec[i], color_elli, 5);
        }
        
        HighGui.imshow("Contours operation", src);
        HighGui.waitKey();
    }
}

ইনপুট ইমেজ

OpenCV Java ব্যবহার করে ইমেজে সম্ভাব্য অবজেক্টের চারপাশে এলিপস ফিট করার পদ্ধতি

আউটপুট

OpenCV Java ব্যবহার করে ইমেজে সম্ভাব্য অবজেক্টের চারপাশে এলিপস ফিট করার পদ্ধতি

  1. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে মিরর ইমেজ তৈরি

  2. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে রঙিন চিত্রকে ব্লু/গ্রিন/রেড চিত্রে রূপান্তর

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে রঙিন চিত্রকে গ্রেস্কেলে রূপান্তর

  4. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্র লিখা/সংরক্ষণ