объединение контуров в Java - PullRequest
0 голосов
/ 05 июля 2019

Есть ли эффективный способ в opencv / java для вычисления объединения контуров и получения результирующего контура?

Я пробовал с преобразованием opencv.contour в java.awt.geom.Area, с Core.bitwise_ и слиянием MatOfPoint с кривой и approxPolyDP, но ничего не дает хорошего результата.

Это единственный способ, использовать drawContour для contour1 и contour2 на черном изображении, а затем findContour?

1 Ответ

0 голосов
/ 12 июля 2019

Одно из решений:

MatOfPoint contoursIntersection( Mat ref, MatOfPoint cnt1, MatOfPoint cnt2) {

        MatOfPoint intersec = new MatOfPoint();

        Mat blackImage = new Mat();
        ref.copyTo( blackImage);
        blackImage.setTo( new Scalar( 0, 0, 0));

        List<MatOfPoint> coll = new ArrayList<MatOfPoint>();
        coll.add(cnt1);
        coll.add(cnt2);
        Imgproc.drawContours(blackImage, coll, 0, new Scalar(255,0,0), Core.FILLED);
        Imgproc.drawContours(blackImage, coll, 1, new Scalar(255,0,0), Core.FILLED);
        //Imgproc.fillPoly( blackImage, coll, new Scalar(0,0,255));
        blackImage.copyTo( frameIntersection);

        Imgproc.cvtColor( blackImage, blackImage, Imgproc.COLOR_BGR2GRAY);

        List<MatOfPoint> contours = new ArrayList< MatOfPoint>();
        Mat hierarchy = new Mat();
        Imgproc.findContours( blackImage, contours, hierarchy,  Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE );

        System.out.println("===== contoursIntersection > number = " + contours.size());

        if (contours.size() == 1)   {
            intersec = contours.get(0);
        }
        return intersec;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...