Example usage for org.opencv.calib3d Calib3d findChessboardCorners

List of usage examples for org.opencv.calib3d Calib3d findChessboardCorners

Introduction

In this page you can find the example usage for org.opencv.calib3d Calib3d findChessboardCorners.

Prototype

public static boolean findChessboardCorners(Mat image, Size patternSize, MatOfPoint2f corners, int flags) 

Source Link

Usage

From source file:com.shootoff.camera.autocalibration.AutoCalibrationManager.java

License:Open Source License

public Optional<MatOfPoint2f> findChessboard(Mat mat) {
    //Mat grayImage = new Mat();

    //Imgproc.cvtColor(mat, grayImage, Imgproc.COLOR_BGR2GRAY);

    Mat grayImage = mat;/*from   ww w  .  j ava2  s . c  o m*/

    MatOfPoint2f imageCorners = new MatOfPoint2f();

    boolean found = Calib3d.findChessboardCorners(grayImage, boardSize, imageCorners,
            Calib3d.CALIB_CB_NORMALIZE_IMAGE + Calib3d.CALIB_CB_ADAPTIVE_THRESH);

    logger.trace("found {}", found);

    if (found) {
        // optimization
        Imgproc.cornerSubPix(grayImage, imageCorners, new Size(1, 1), new Size(-1, -1), term);

        return Optional.of(imageCorners);
    }
    return Optional.empty();
}

From source file:org.usfirst.frc.team2084.CMonster2016.vision.CameraCalibration.java

License:Open Source License

/**
 * Draws checkerboard corners on an image.
 * // www .j a  v  a  2 s .  c  om
 * @param image the image to process
 * @param addToCalibration if true, add this image to the corner list
 */
public void process(Mat image, boolean addToCalibration) {
    boolean patternFound = Calib3d.findChessboardCorners(image, boardSize, boardCorners,
            Calib3d.CALIB_CB_ADAPTIVE_THRESH | Calib3d.CALIB_CB_NORMALIZE_IMAGE | Calib3d.CALIB_CB_FAST_CHECK);

    if (patternFound) {
        // Refine corner positions to be more accurate
        Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_BGR2GRAY);
        Imgproc.cornerSubPix(grayImage, boardCorners, new Size(6, 6), new Size(-1, -1),
                new TermCriteria(TermCriteria.EPS + TermCriteria.COUNT, 30, 0.1));

        if (addToCalibration) {
            calibrationCorners.add(boardCorners);
        }

    }

    image.copyTo(boardImage);
    Calib3d.drawChessboardCorners(boardImage, boardSize, boardCorners, patternFound);

    if (!addToCalibration) {
        debugImage("Board", boardImage);
    }

    Imgproc.undistort(image, undistortImage, cameraMatrix, distCoeffs);

    undistortImage.copyTo(image);

    Imgproc.putText(image, "Error: " + error, new Point(20, 20), Core.FONT_HERSHEY_PLAIN, 1.5,
            new Scalar(0, 255, 0));
}