Example usage for org.opencv.features2d FeatureDetector read

List of usage examples for org.opencv.features2d FeatureDetector read

Introduction

In this page you can find the example usage for org.opencv.features2d FeatureDetector read.

Prototype

public void read(String fileName) 

Source Link

Usage

From source file:samples.GripPipeline.java

License:Open Source License

/**
 * Detects groups of pixels in an image.
 * @param input The image on which to perform the find blobs.
 * @param minArea The minimum size of a blob that will be found
 * @param circularity The minimum and maximum circularity of blobs that will be found
 * @param darkBlobs The boolean that determines if light or dark blobs are found.
 * @param blobList The output where the MatOfKeyPoint is stored.
 */// w  w w  . j  av a2s. c  o  m
private void findBlobs(Mat input, double minArea, double[] circularity, Boolean darkBlobs,
        MatOfKeyPoint blobList) {
    FeatureDetector blobDet = FeatureDetector.create(FeatureDetector.SIMPLEBLOB);
    try {
        File tempFile = File.createTempFile("config", ".xml");

        StringBuilder config = new StringBuilder();

        config.append("<?xml version=\"1.0\"?>\n");
        config.append("<opencv_storage>\n");
        config.append("<thresholdStep>10.</thresholdStep>\n");
        config.append("<minThreshold>50.</minThreshold>\n");
        config.append("<maxThreshold>220.</maxThreshold>\n");
        config.append("<minRepeatability>2</minRepeatability>\n");
        config.append("<minDistBetweenBlobs>10.</minDistBetweenBlobs>\n");
        config.append("<filterByColor>1</filterByColor>\n");
        config.append("<blobColor>");
        config.append((darkBlobs ? 0 : 255));
        config.append("</blobColor>\n");
        config.append("<filterByArea>1</filterByArea>\n");
        config.append("<minArea>");
        config.append(minArea);
        config.append("</minArea>\n");
        config.append("<maxArea>");
        config.append(Integer.MAX_VALUE);
        config.append("</maxArea>\n");
        config.append("<filterByCircularity>1</filterByCircularity>\n");
        config.append("<minCircularity>");
        config.append(circularity[0]);
        config.append("</minCircularity>\n");
        config.append("<maxCircularity>");
        config.append(circularity[1]);
        config.append("</maxCircularity>\n");
        config.append("<filterByInertia>1</filterByInertia>\n");
        config.append("<minInertiaRatio>0.1</minInertiaRatio>\n");
        config.append("<maxInertiaRatio>" + Integer.MAX_VALUE + "</maxInertiaRatio>\n");
        config.append("<filterByConvexity>1</filterByConvexity>\n");
        config.append("<minConvexity>0.95</minConvexity>\n");
        config.append("<maxConvexity>" + Integer.MAX_VALUE + "</maxConvexity>\n");
        config.append("</opencv_storage>\n");
        FileWriter writer;
        writer = new FileWriter(tempFile, false);
        writer.write(config.toString());
        writer.close();
        blobDet.read(tempFile.getPath());
    } catch (IOException e) {
        e.printStackTrace();
    }

    blobDet.detect(input, blobList);
}