org.opencv.imgproc.Imgproc 클래스의 fitEllipse() 메서드를 사용하여 모양에 타원을 맞출 수 있습니다. 이 메서드는 MatOfPoint2f 클래스의 객체를 받아들이고, 주어진 점 집합에 맞는 타원을 계산하고, RotatedRect 객체를 반환합니다.
이 방법을 사용하면 이미지의 가능한 개체 주위에 타원을 그릴 수 있습니다. 이렇게 하려면
Imgproc 클래스의 imread() 메서드를 사용하여 이미지를 읽습니다.
Imgproc 클래스의 cvtColor() 메서드를 사용하여 회색조 이미지로 변환합니다.
Imgproc 클래스의 threshold() 메서드를 사용하여 회색조 이미지를 이진 이미지로 변환합니다.
Imgproc 클래스의 findContours() 메서드를 사용하여 이미지에서 윤곽선을 찾습니다.
이제 각 윤곽선 값을 MatOfPoint2f로 fitEllipse() 메서드에 전달하여 가능한 윤곽선의 RotatedRec 개체를 가져옵니다.
마지막으로 ellipse() 메서드를 사용하여 가능한 모양 주위에 타원을 그립니다.
참고 − 타원에 맞추려면 개체에 최소 5개의 점이 포함되어야 합니다.
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(); } }
위 내용은 OpenCV Java를 사용하여 가능한 객체를 둘러싸기 위해 이미지에 타원을 맞추는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!