Example usage for org.opencv.core MatOfFloat6 MatOfFloat6

List of usage examples for org.opencv.core MatOfFloat6 MatOfFloat6

Introduction

In this page you can find the example usage for org.opencv.core MatOfFloat6 MatOfFloat6.

Prototype

public MatOfFloat6() 

Source Link

Usage

From source file:de.hu_berlin.informatik.spws2014.ImagePositionLocator.TriangleImagePositionLocator.java

License:Open Source License

/**
 * Builds ProjectionTriangles from triangulated markers.
 * Requires OpenCV!//from   w w  w . ja va 2s .com
 */
public void newMarkerAdded(List<Marker> markers) {
    if (markers.size() < 2)
        return;

    if (markers.size() == 2) {
        //Guess third marker
        projs = new ArrayList<ProjectionTriangle>();
        projs.add(new ProjectionTriangle(markers.get(0), markers.get(1)));
    } else {
        Subdiv2D subdiv = new Subdiv2D();
        subdiv.initDelaunay(new Rect(0, 0, imageSize.x, imageSize.y));

        for (Marker m : markers)
            System.out.println("-> " + m.realpoint.longitude + " / " + m.realpoint.latitude);
        for (Marker m : markers)
            subdiv.insert(new Point(m.imgpoint.x, m.imgpoint.y));

        MatOfFloat6 mafloat = new MatOfFloat6();
        subdiv.getTriangleList(mafloat);
        float[] tmparray = mafloat.toArray();

        ArrayList<ProjectionTriangle> tmplist = new ArrayList<ProjectionTriangle>();
        for (int i = 0; i < tmparray.length; i += 6) {
            Marker m1 = findMarkerByPoint(markers, tmparray[i], tmparray[i + 1]);
            Marker m2 = findMarkerByPoint(markers, tmparray[i + 2], tmparray[i + 3]);
            Marker m3 = findMarkerByPoint(markers, tmparray[i + 4], tmparray[i + 5]);

            if (m1 != null && m2 != null && m3 != null)
                tmplist.add(new ProjectionTriangle(m1, m2, m3, settings.getMaxDissimilarityPercent(),
                        settings.getBadTriWeightPenalty(), settings.getMinTriAngleSize()));
        }

        for (ProjectionTriangle mainPt : tmplist) {
            for (ProjectionTriangle subPt : tmplist) {
                if (mainPt != subPt)
                    mainPt.tryAddToProjGroup(subPt);
            }
        }

        projs = tmplist;
    }
}