List of usage examples for org.opencv.core Rect Rect
public Rect(double[] vals)
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(); } } }