Example usage for org.opencv.core Rect Rect

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

Introduction

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

Prototype

public Rect(double[] vals) 

Source Link

Usage

From source file:ch.zhaw.facerecognitionlibrary.Helpers.FaceDetection.java

License:Open Source License

public Eyes getEyes(Mat img) {
    double halfWidth = img.cols() / 2;
    double height = img.rows();
    double[] values = new double[4];
    values[0] = 0;/*w  ww.  ja v  a  2s  .com*/
    values[1] = 0;
    values[2] = halfWidth;
    values[3] = height;
    Rect rightHalf = new Rect(values);
    values[0] = halfWidth;
    Rect leftHalf = new Rect(values);
    MatOfRect rightEyes = new MatOfRect();
    MatOfRect leftEyes = new MatOfRect();

    Mat rightHalfImg = img.submat(rightHalf);
    rightEyeDetector.detectMultiScale(rightHalfImg, rightEyes);
    Mat leftHalfImg = img.submat(leftHalf);
    leftEyeDetector.detectMultiScale(leftHalfImg, leftEyes);

    if (rightEyes.empty() || leftEyes.empty() || rightEyes.toArray().length > 1
            || leftEyes.toArray().length > 1) {
        return null;
    }

    Rect rightEye = rightEyes.toArray()[0];
    Rect leftEye = leftEyes.toArray()[0];

    MatOfFloat rightPoint = new MatOfFloat(rightEye.x + rightEye.width / 2, rightEye.y + rightEye.height / 2);
    MatOfFloat leftPoint = new MatOfFloat(img.cols() / 2 + leftEye.x + leftEye.width / 2,
            leftEye.y + leftEye.height / 2);

    MatOfFloat diff = new MatOfFloat();
    Core.subtract(leftPoint, rightPoint, diff);
    double angle = Core.fastAtan2(diff.toArray()[1], diff.toArray()[0]);
    double dist = Core.norm(leftPoint, rightPoint, Core.NORM_L2);
    Eyes eyes = new Eyes(dist, rightPoint, leftPoint, angle);
    return eyes;
}

From source file:uk.ac.horizon.artcodes.detect.ImageBuffers.java

License:Open Source License

public Mat getImageInGrey() {
    if (currentBuffer == yuvBuffer) {
        double[] rectArray = { 0, 0, yuvBuffer.cols(), (yuvBuffer.rows() / 3) * 2 };
        greyBuffer = yuvBuffer.submat(new Rect(rectArray));
    } else if (currentBuffer == bgrBuffer) {
        Imgproc.cvtColor(getBgrBuffer(), getGreyBuffer(), Imgproc.COLOR_BGR2GRAY);
    } else {/* w w w.j a  v a 2s  . c o  m*/
        getGreyBuffer();
    }
    currentBuffer = greyBuffer;
    return greyBuffer;
}

From source file:uk.ac.horizon.artcodes.detect.ImageBuffers.java

License:Open Source License

public Mat getGreyBuffer() {
    if (greyBuffer == null) {
        if (yuvBuffer != null) {
            double[] rectArray = { 0, 0, yuvBuffer.cols(), (yuvBuffer.rows() / 3) * 2 };
            greyBuffer = yuvBuffer.submat(new Rect(rectArray));
        } else {/*  w ww .  ja  va2s  .  com*/
            Log.w(getClass().getSimpleName(), "Creating grey buffer in getGreyBuffer()");
            greyBuffer = new Mat(ROI.height, ROI.width, CvType.CV_8UC1);
        }
    }
    return this.greyBuffer;
}

From source file:uk.ac.horizon.artcodes.detect.ImageBuffers.java

License:Open Source License

public void setROI(Rect rect) {
    this.ROI = rect;
    if (rect == null) {
        double[] roiArray = { 0, 0, cameraImage.cols(), (cameraImage.rows() / 3) * 2 };
        this.ROI = new Rect(roiArray);
        yuvBuffer = cameraImage;//from  www  .  j  a  v  a 2 s .co m
        currentBuffer = yuvBuffer;
    } else {
        if (rect.height == (cameraImage.rows() / 3) * 2) {
            Log.i(this.getClass().getSimpleName(), "rect.height == camera image height (simple case)");

            double[] rectArray = { rect.x, rect.y, rect.width, rect.height + rect.height / 2 };
            yuvBuffer = cameraImage.submat(new Rect(rectArray));
        } else {
            Log.i(this.getClass().getSimpleName(), "rect.height != camera image height (complicated case)");
            // TODO
            throw new UnsupportedOperationException();
        }
    }
}