আপনি fitEllipse() ব্যবহার করে একটি আকৃতির উপর একটি উপবৃত্তাকার ফিট করতে পারেন এর পদ্ধতি org.opencv.imgproc.Imgproc ক্লাস এই পদ্ধতিটি MatOfPoint2f শ্রেণীর একটি অবজেক্ট গ্রহণ করে, প্রদত্ত পয়েন্টের সেটের সাথে মানানসই উপবৃত্তাকার গণনা করে এবং একটি ঘূর্ণিত রেক্ট অবজেক্ট প্রদান করে।
এটি ব্যবহার করে আপনি একটি চিত্রের সম্ভাব্য বস্তুর চারপাশে উপবৃত্ত আঁকতে পারেন। এটি করতে,
-
imread() ব্যবহার করে একটি ছবি পড়ুন Imgproc ক্লাসের পদ্ধতি।
-
cvtColor() ব্যবহার করে এটিকে একটি গ্রেস্কেল ছবিতে রূপান্তর করুন Imgproc ক্লাসের পদ্ধতি।
-
থ্রেশহোল্ড() ব্যবহার করে ধূসর চিত্রটিকে বাইনারিতে রূপান্তর করুন Imgproc ক্লাসের পদ্ধতি।
-
findContours() ব্যবহার করে ছবিতে কনট্যুরগুলি খুঁজুন৷ Imgproc ক্লাসের পদ্ধতি।
-
এখন, RotatedRec পান প্রতিটি কনট্যুর মানকে MatOfPoint2f হিসাবে fitEllipse() এ বাইপাস করে সম্ভাব্য কনট্যুরের জন্য অবজেক্ট পদ্ধতি।
-
সবশেষে, Elipse() ব্যবহার করে সম্ভাব্য আকারের চারপাশে উপবৃত্ত আঁকুন পদ্ধতি।
নোট ৷ − উপবৃত্তাকার ফিট করার জন্য বস্তুটিতে কমপক্ষে পাঁচটি বিন্দু থাকা উচিত।
উদাহরণ
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 { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading the contents of the image String file ="D:\\Images\\javafx_graphical.jpg"; Mat src = Imgcodecs.imread(file); //Converting the source image to binary 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); //Finding Contours List<MatOfPoint> contours = new ArrayList<>(); Mat hierarchey = new Mat(); Imgproc.findContours(binary, contours, hierarchey, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE); //Empty rectangle 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(); } }
৷
ইনপুট চিত্র
৷
আউটপুট