Android Open Source - android-opencv-template Rect






From Project

Back to project page android-opencv-template.

License

The source code is released under:

MIT License

If you think the Android project android-opencv-template listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.opencv.core;
//w  ww .  j a  va 2s.  co  m
/**
 * <p>template<typename _Tp> class CV_EXPORTS Rect_ <code></p>
 *
 * <p>// C++ code:</p>
 *
 *
 * <p>public:</p>
 *
 * <p>typedef _Tp value_type;</p>
 *
 * <p>//! various constructors</p>
 *
 * <p>Rect_();</p>
 *
 * <p>Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);</p>
 *
 * <p>Rect_(const Rect_& r);</p>
 *
 * <p>Rect_(const CvRect& r);</p>
 *
 * <p>Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz);</p>
 *
 * <p>Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);</p>
 *
 * <p>Rect_& operator = (const Rect_& r);</p>
 *
 * <p>//! the top-left corner</p>
 *
 * <p>Point_<_Tp> tl() const;</p>
 *
 * <p>//! the bottom-right corner</p>
 *
 * <p>Point_<_Tp> br() const;</p>
 *
 * <p>//! size (width, height) of the rectangle</p>
 *
 * <p>Size_<_Tp> size() const;</p>
 *
 * <p>//! area (width*height) of the rectangle</p>
 *
 * <p>_Tp area() const;</p>
 *
 * <p>//! conversion to another data type</p>
 *
 * <p>template<typename _Tp2> operator Rect_<_Tp2>() const;</p>
 *
 * <p>//! conversion to the old-style CvRect</p>
 *
 * <p>operator CvRect() const;</p>
 *
 * <p>//! checks whether the rectangle contains the point</p>
 *
 * <p>bool contains(const Point_<_Tp>& pt) const;</p>
 *
 * <p>_Tp x, y, width, height; //< the top-left corner, as well as width and height
 * of the rectangle</p>
 *
 * <p>};</p>
 *
 * <p>Template class for 2D rectangles, described by the following parameters:
 * </code></p>
 * <ul>
 *   <li> Coordinates of the top-left corner. This is a default interpretation
 * of <code>Rect_.x</code> and <code>Rect_.y</code> in OpenCV. Though, in your
 * algorithms you may count <code>x</code> and <code>y</code> from the
 * bottom-left corner.
 *   <li> Rectangle width and height.
 * </ul>
 *
 * <p>OpenCV typically assumes that the top and left boundary of the rectangle are
 * inclusive, while the right and bottom boundaries are not. For example, the
 * method <code>Rect_.contains</code> returns <code>true</code> if</p>
 *
 * <p><em>x <= pt.x &lt x+width,&ltBR&gty <= pt.y &lt y+height</em></p>
 *
 * <p>Virtually every loop over an imageROI in OpenCV (where ROI is specified by
 * <code>Rect_<int></code>) is implemented as: <code></p>
 *
 * <p>// C++ code:</p>
 *
 * <p>for(int y = roi.y; y < roi.y + rect.height; y++)</p>
 *
 * <p>for(int x = roi.x; x < roi.x + rect.width; x++)</p>
 *
 *
 * <p>//...</p>
 *
 *
 * <p>In addition to the class members, the following operations on rectangles are
 * implemented: </code></p>
 * <ul>
 *   <li> <em>rect = rect +- point</em> (shifting a rectangle by a certain
 * offset)
 *   <li> <em>rect = rect +- size</em> (expanding or shrinking a rectangle by a
 * certain amount)
 *   <li> <code>rect += point, rect -= point, rect += size, rect -= size</code>
 * (augmenting operations)
 *   <li> <code>rect = rect1 & rect2</code> (rectangle intersection)
 *   <li> <code>rect = rect1 | rect2</code> (minimum area rectangle containing
 * <code>rect2</code> and <code>rect3</code>)
 *   <li> <code>rect &= rect1, rect |= rect1</code> (and the corresponding
 * augmenting operations)
 *   <li> <code>rect == rect1, rect != rect1</code> (rectangle comparison)
 * </ul>
 *
 * <p>This is an example how the partial ordering on rectangles can be established
 * (rect1<em>subseteq</em> rect2): <code></p>
 *
 * <p>// C++ code:</p>
 *
 * <p>template<typename _Tp> inline bool</p>
 *
 * <p>operator <= (const Rect_<_Tp>& r1, const Rect_<_Tp>& r2)</p>
 *
 *
 * <p>return (r1 & r2) == r1;</p>
 *
 *
 * <p>For your convenience, the <code>Rect_<></code> alias is available:</p>
 *
 * <p>typedef Rect_<int> Rect;</p>
 *
 * @see <a href="http://docs.opencv.org/modules/core/doc/basic_structures.html#rect">org.opencv.core.Rect_</a>
 */
public class Rect {

    public int x, y, width, height;

    public Rect(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }

    public Rect() {
        this(0, 0, 0, 0);
    }

    public Rect(Point p1, Point p2) {
        x = (int) (p1.x < p2.x ? p1.x : p2.x);
        y = (int) (p1.y < p2.y ? p1.y : p2.y);
        width = (int) (p1.x > p2.x ? p1.x : p2.x) - x;
        height = (int) (p1.y > p2.y ? p1.y : p2.y) - y;
    }

    public Rect(Point p, Size s) {
        this((int) p.x, (int) p.y, (int) s.width, (int) s.height);
    }

    public Rect(double[] vals) {
        set(vals);
    }

    public void set(double[] vals) {
        if (vals != null) {
            x = vals.length > 0 ? (int) vals[0] : 0;
            y = vals.length > 1 ? (int) vals[1] : 0;
            width = vals.length > 2 ? (int) vals[2] : 0;
            height = vals.length > 3 ? (int) vals[3] : 0;
        } else {
            x = 0;
            y = 0;
            width = 0;
            height = 0;
        }
    }

    public Rect clone() {
        return new Rect(x, y, width, height);
    }

    public Point tl() {
        return new Point(x, y);
    }

    public Point br() {
        return new Point(x + width, y + height);
    }

    public Size size() {
        return new Size(width, height);
    }

    public double area() {
        return width * height;
    }

    public boolean contains(Point p) {
        return x <= p.x && p.x < x + width && y <= p.y && p.y < y + height;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        long temp;
        temp = Double.doubleToLongBits(height);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(width);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(x);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(y);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (!(obj instanceof Rect)) return false;
        Rect it = (Rect) obj;
        return x == it.x && y == it.y && width == it.width && height == it.height;
    }

    @Override
    public String toString() {
        return "{" + x + ", " + y + ", " + width + "x" + height + "}";
    }
}




Java Source Code List

com.floatlearning.android_opencv_template.MainActivity.java
org.opencv.android.AsyncServiceHelper.java
org.opencv.android.BaseLoaderCallback.java
org.opencv.android.CameraBridgeViewBase.java
org.opencv.android.FpsMeter.java
org.opencv.android.InstallCallbackInterface.java
org.opencv.android.JavaCameraView.java
org.opencv.android.LoaderCallbackInterface.java
org.opencv.android.NativeCameraView.java
org.opencv.android.OpenCVLoader.java
org.opencv.android.StaticHelper.java
org.opencv.android.Utils.java
org.opencv.calib3d.Calib3d.java
org.opencv.calib3d.StereoBM.java
org.opencv.calib3d.StereoSGBM.java
org.opencv.contrib.Contrib.java
org.opencv.contrib.FaceRecognizer.java
org.opencv.contrib.StereoVar.java
org.opencv.core.Algorithm.java
org.opencv.core.Core.java
org.opencv.core.CvException.java
org.opencv.core.CvType.java
org.opencv.core.MatOfByte.java
org.opencv.core.MatOfDMatch.java
org.opencv.core.MatOfDouble.java
org.opencv.core.MatOfFloat4.java
org.opencv.core.MatOfFloat6.java
org.opencv.core.MatOfFloat.java
org.opencv.core.MatOfInt4.java
org.opencv.core.MatOfInt.java
org.opencv.core.MatOfKeyPoint.java
org.opencv.core.MatOfPoint2f.java
org.opencv.core.MatOfPoint3.java
org.opencv.core.MatOfPoint3f.java
org.opencv.core.MatOfPoint.java
org.opencv.core.MatOfRect.java
org.opencv.core.Mat.java
org.opencv.core.Point3.java
org.opencv.core.Point.java
org.opencv.core.Range.java
org.opencv.core.Rect.java
org.opencv.core.RotatedRect.java
org.opencv.core.Scalar.java
org.opencv.core.Size.java
org.opencv.core.TermCriteria.java
org.opencv.features2d.DMatch.java
org.opencv.features2d.DescriptorExtractor.java
org.opencv.features2d.DescriptorMatcher.java
org.opencv.features2d.FeatureDetector.java
org.opencv.features2d.Features2d.java
org.opencv.features2d.GenericDescriptorMatcher.java
org.opencv.features2d.KeyPoint.java
org.opencv.gpu.DeviceInfo.java
org.opencv.gpu.Gpu.java
org.opencv.gpu.TargetArchs.java
org.opencv.highgui.Highgui.java
org.opencv.highgui.VideoCapture.java
org.opencv.imgproc.CLAHE.java
org.opencv.imgproc.Imgproc.java
org.opencv.imgproc.Moments.java
org.opencv.imgproc.Subdiv2D.java
org.opencv.ml.CvANN_MLP_TrainParams.java
org.opencv.ml.CvANN_MLP.java
org.opencv.ml.CvBoostParams.java
org.opencv.ml.CvBoost.java
org.opencv.ml.CvDTreeParams.java
org.opencv.ml.CvDTree.java
org.opencv.ml.CvERTrees.java
org.opencv.ml.CvGBTreesParams.java
org.opencv.ml.CvGBTrees.java
org.opencv.ml.CvKNearest.java
org.opencv.ml.CvNormalBayesClassifier.java
org.opencv.ml.CvParamGrid.java
org.opencv.ml.CvRTParams.java
org.opencv.ml.CvRTrees.java
org.opencv.ml.CvSVMParams.java
org.opencv.ml.CvSVM.java
org.opencv.ml.CvStatModel.java
org.opencv.ml.EM.java
org.opencv.ml.Ml.java
org.opencv.objdetect.CascadeClassifier.java
org.opencv.objdetect.HOGDescriptor.java
org.opencv.objdetect.Objdetect.java
org.opencv.photo.Photo.java
org.opencv.utils.Converters.java
org.opencv.video.BackgroundSubtractorMOG2.java
org.opencv.video.BackgroundSubtractorMOG.java
org.opencv.video.BackgroundSubtractor.java
org.opencv.video.KalmanFilter.java
org.opencv.video.Video.java