Example usage for org.opencv.core Point Point

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

Introduction

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

Prototype

public Point(double x, double y) 

Source Link

Usage

From source file:uom.research.thalassemia.logic.BloodCellDataProcessor.java

/**
 * process circular blood cell data including both pallor and red blood
 * cells.// w ww  .j  a  v a  2 s  . c om
 *
 */
public void ellipseBloodCellsProcesser() {
    ellipseBloodCellsArray = new ArrayList<>();
    int index = 0;
    MatOfPoint allcontours = new MatOfPoint();
    for (MatOfPoint mat : contours) {
        mat.copyTo(allcontours);
        RotatedRect boundingEllipse;
        if (allcontours.toArray().length > FOUR) {
            MatOfPoint2f newMat2 = new MatOfPoint2f(allcontours.toArray());
            boundingEllipse = Imgproc.fitEllipse(newMat2);
            //ellipse centre x cordination
            double xx, yy, rr, width, height, area, perimeter, diameter, deviationValue, areaPreparation, sgf;

            xx = boundingEllipse.center.x;
            //ellipse centre y cordination
            yy = boundingEllipse.center.y;
            //ellipse width
            width = boundingEllipse.size.width;
            //ellipse height
            height = boundingEllipse.size.height;
            // assume radius is width. width is the hightest length.
            rr = width;
            sgf = width / height;
            //get area value
            area = calculateArea(width, height);
            //get perimeter value
            perimeter = calculatePerimeter(width, height);
            //get diameter value
            diameter = calculateDiameter(area, perimeter);
            // calculate deviational value
            if (rr > 0) {
                deviationValue = sgf / area;

                Map<Point, Double> points = getPallorBloodCellsPointList();
                areaPreparation = 0;

                Point point = new Point(xx, yy);
                if (points.containsKey(point)) {
                    areaPreparation = calculateArea(points.get(point)) / area;
                }

                Object[] ob = { (++index), xx, yy, rr, Validator.formatDouble(perimeter),
                        Validator.formatDouble(area), Validator.formatDouble(diameter),
                        Validator.formatDouble(deviationValue), Validator.formatDouble(areaPreparation) };

                totalEllipseArea += area;
                ellipseBloodCellsArray.add(ob);
            }
        }
    }
}

From source file:uom.research.thalassemia.logic.BloodCellDataProcessor.java

/**
 * get Pallor Blood cells point list.//from  ww  w  .  j  a  v a2  s  . co  m
 *
 * @return List<Point> List
 */
private Map<Point, Double> getPallorBloodCellsPointList() {
    double[] circles;
    Map<Point, Double> points = new HashMap<>();
    double x, y, r;
    for (int a = 0; a < pallorBloodCells.cols(); a++) {
        circles = pallorBloodCells.get(0, a);
        x = circles[0];
        y = circles[1];
        r = Math.round(circles[2]);
        points.put(new Point(x, y), r);
    }
    return points;
}

From source file:uom.research.thalassemia.logic.BloodCellsManipulationImpl.java

/**
 * do Blood Cell Processing./* www .j a  v a 2  s  . c o  m*/
 *
 * @throws Exception Exception
 */
@Override
public void doBloodCellProcessing() throws Exception {
    if (imageFile.isFile()) {
        // Load Native Library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // Load Selected File onto Original Mat
        original = Imgcodecs.imread(imageFile.getAbsolutePath(), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);

        // Create Mats with Original Mat's Size
        gray = original.clone();
        smooth = original.clone();
        canny = original.clone();
        threshold = original.clone();
        red = original.clone();
        laplacian = original.clone();
        circularsMat = original.clone();
        ellipsesMat = original.clone();

        // Sets Gray Scale to gray Map
        Imgproc.cvtColor(original, gray, Imgproc.COLOR_BGR2HSV);

        grayImage = convertMapToImage(gray);

        // Sest Red Colour Range Min and Max
        Scalar minc = new Scalar(95, 150, 75, 0);
        Scalar maxc = new Scalar(145, 255, 255, 0);

        // Sets Red Colour Mat for Given Range
        Core.inRange(original, maxc, maxc, red);

        redImage = convertMapToImage(red);

        int type = BufferedImage.TYPE_INT_RGB;
        //gray = Imgcodecs.imdecode(original, type);
        image = new BufferedImage(original.cols(), original.rows(), type);

        //Imgproc.GaussianBlur(mGray, mGray, new Size(15,15),50);
        //redImage = new BufferedImage(original.width(), original.height(), BufferedImage.TYPE_INT_RGB);
        //byte[] data2 = ((DataBufferByte) redImage.getRaster().getDataBuffer()).getData();
        Imgproc.threshold(gray, threshold, 155, 255, Imgproc.THRESH_BINARY);

        //Imgproc.Laplacian(gray, laplacian, CvType.CV_8UC3);//CV_8UC1);
        //laplacianImage = convertMapToImage(laplacian);
        thresholdImage = convertMapToImage(threshold);

        Imgproc.Canny(threshold, canny, 50, 100, 3, false);
        cannyImage = convertMapToImage(canny);

        //Imgproc.cvtColor(canny, canny, Imgproc.COLOR_BGR2GRAY);
        circles = new Mat();

        int imageArea = original.width() * original.height();

        if (imageArea > 5100000) {
            Imgproc.HoughCircles(canny, circles, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    220, //Minimum distance between the centers of the detected circles. default 100
                    100, //Higher threshold for canny edge detector. default100
                    200, //Threshold at the center detection stage. default 200
                    90, //min radius. default 50
                    130 //max radius. default 90
            );
        } else if (imageArea > 1309500) {
            Imgproc.HoughCircles(canny, circles, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    110, //Minimum distance between the centers of the detected circles. default 100
                    100, //Higher threshold for canny edge detector. default100
                    150, //Threshold at the center detection stage. default 200
                    50, //min radius. default 50
                    67 //max radius. default 90
            );
        } else if (imageArea > 540000) {
            Imgproc.HoughCircles(canny, circles, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    110, //Minimum distance between the centers of the detected circles. default 100
                    100, //Higher threshold for canny edge detector. default100
                    200, //Threshold at the center detection stage. default 200
                    30, //min radius. default 50
                    65 //max radius. default 90
            );
        } else if (imageArea > 400000) {
            Imgproc.HoughCircles(canny, circles, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    50, //Minimum distance between the centers of the detected circles. default 100
                    60, //Higher threshold for canny edge detector. default100
                    100, //Threshold at the center detection stage. default 200
                    25, //min radius. default 50
                    40 //max radius. default 90
            );
        }

        if (circles.cols() > 0) {
            for (int x = 0; x < circles.cols(); x++) {
                double vCircle[] = circles.get(0, x);
                if (vCircle == null) {
                    break;
                }
                Point pt = new Point(Math.round(vCircle[0]), Math.round(vCircle[1]));
                int radius = (int) Math.round(vCircle[2]);
                radiusList.add(radius);
                // draw the found circle
                Imgproc.circle(circularsMat, pt, radius, new Scalar(0, 255, 0), 3);
            }
        }

        // set Pallor circles
        circlesPallor = new Mat();
        if (imageArea > 5100000) {
            Imgproc.HoughCircles(canny, circlesPallor, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    220, //Minimum distance between the centers of the detected circles
                    100, //Higher threshold for canny edge detector
                    150, //Threshold at the center detection stage
                    0, //min radius
                    70 //max radius
            );
        } else if (imageArea > 1309500) {
            Imgproc.HoughCircles(canny, circlesPallor, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    110, //Minimum distance between the centers of the detected circles
                    50, //Higher threshold for canny edge detector
                    100, //Threshold at the center detection stage
                    0, //min radius
                    45 //max radius
            );
        } else if (imageArea > 540000) {
            Imgproc.HoughCircles(canny, circlesPallor, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    100, //Minimum distance between the centers of the detected circles
                    50, //Higher threshold for canny edge detector
                    100, //Threshold at the center detection stage
                    0, //min radius
                    35 //max radius
            );

        } else if (imageArea > 400000) {
            Imgproc.HoughCircles(canny, circlesPallor, Imgproc.CV_HOUGH_GRADIENT, 8, //Inverse ratio
                    50, //Minimum distance between the centers of the detected circles
                    10, //Higher threshold for canny edge detector
                    30, //Threshold at the center detection stage
                    0, //min radius
                    25 //max radius
            );

        }
        if (circlesPallor.cols() > 0) {
            for (int x = 0; x < circlesPallor.cols(); x++) {
                double vCircle[] = circlesPallor.get(0, x);
                if (vCircle == null) {
                    break;
                }
                Point pt = new Point(Math.round(vCircle[0]), Math.round(vCircle[1]));
                int radius = (int) Math.round(vCircle[2]);
                //radiusList.add(radius);
                // draw the found circle
                Imgproc.circle(circularsMat, pt, radius, new Scalar(0, 0, 255), 0);
            }
        }

        // set Ellipses
        contours = new ArrayList<>();
        Imgproc.findContours(canny, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
        MatOfPoint allcontours = new MatOfPoint();
        for (MatOfPoint mat : contours) {
            mat.copyTo(allcontours);
            RotatedRect boundingEllipse = null;
            if (allcontours.toArray().length > 4) {
                MatOfPoint newMat1 = new MatOfPoint(allcontours.toArray());
                MatOfPoint2f newMat2 = new MatOfPoint2f(allcontours.toArray());
                Rect boundingRect = Imgproc.boundingRect(newMat1);
                boundingEllipse = Imgproc.fitEllipse(newMat2);
            }

            if (boundingEllipse != null) {
                Imgproc.ellipse(ellipsesMat, boundingEllipse, new Scalar(255, 0, 0), 2);
            }
        }

        circleCount = circles.cols();
        circularsImage = convertMapToImage(circularsMat);
        ellipsesImage = convertMapToImage(ellipsesMat);
    }
}

From source file:usefull.hogPeopleDetection.java

License:LGPL

public static void main(String[] args) throws InterruptedException {

    // load the Core OpenCV library by name

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    // create video capture device object

    VideoCapture cap = new VideoCapture();

    // try to use the hardware device if present

    int CAM_TO_USE = 0;

    // create a new image object

    Mat matFrame = new Mat();

    // try to open first capture device (0)

    try {/* w ww. ja va2  s.co m*/
        cap.open(CAM_TO_USE);
    } catch (Exception e1) {
        System.out.println("No webcam attached");

        // otherwise try opening a video file 

        try {
            cap.open("files/video.mp4");
        } catch (Exception e2) {
            System.out.println("No video file found");
        }
    }

    // if the a video capture source is now open

    if (cap.isOpened()) {

        // create a new window object

        Imshow ims = new Imshow("HOG People Detection");

        boolean keepProcessing = true;

        // create new HoG detection object

        HOGDescriptor HOG = new HOGDescriptor();
        HOG.setSVMDetector(HOGDescriptor.getDefaultPeopleDetector());

        // create 

        MatOfRect foundLocations = new MatOfRect();
        MatOfDouble foundWeights = new MatOfDouble();

        while (keepProcessing) {
            // grab the next frame from video source

            cap.grab();

            // decode and return the grabbed video frame

            cap.retrieve(matFrame);

            // if the frame is valid (not end of video for example)

            if (!(matFrame.empty())) {
                // perform detection

                HOG.detectMultiScale(matFrame, foundLocations, foundWeights, 0, new Size(8, 8),
                        new Size(32, 32), 1.05, 8, false);

                List<Rect> rectangles = foundLocations.toList();

                for (int i = 0; i < rectangles.size(); i++) {

                    Core.rectangle(matFrame, new Point(rectangles.get(i).x, rectangles.get(i).y),
                            new Point(rectangles.get(i).x + rectangles.get(i).width,
                                    rectangles.get(i).y + rectangles.get(i).height),
                            new Scalar(255, 0, 0), 2, 1, 0);
                }

                // display image with a delay of 40ms (i.e. 1000 ms / 25 = 25 fps)

                ims.showImage(matFrame);
                Thread.sleep(40);
            } else {
                keepProcessing = false;
            }
        }

    } else {
        System.out.println("error cannot open any capture source - exiting");
    }

    // close down the camera correctly

    cap.release();

}

From source file:usefull.LoopImageFiles.java

License:LGPL

public static void main(String[] args) throws InterruptedException {

    // define the path to my files - clearly and obviously 

    // **** CHANGE THIS TO YOUR OWN DIRECTORY ****/

    String IMAGE_FILES_DIRECTORY_PATH = "files/combinations/";

    // load the Core OpenCV library by name

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    // create a display window using an Imshow object

    Imshow ims = new Imshow("Next Image ...");

    Size frame = new Size(704, 480);

    List<Mat> backgroundImg = new ArrayList<Mat>();
    backgroundImg.add(Highgui.imread("files/1.png"));
    backgroundImg.add(Highgui.imread("files/2.png"));
    backgroundImg.add(Highgui.imread("files/3.png"));
    backgroundImg.add(Highgui.imread("files/4.png"));
    backgroundImg.add(Highgui.imread("files/5.png"));
    backgroundImg.add(Highgui.imread("files/6.png"));
    backgroundImg.add(Highgui.imread("files/7.png"));

    for (Mat bgImg : backgroundImg) {
        Mat grey = new Mat();
        Imgproc.cvtColor(bgImg, grey, Imgproc.COLOR_BGR2GRAY);
        Imgproc.adaptiveThreshold(grey, bgImg, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV,
                7, 10);// ww w .  j av a  2s  .c  om

        Size ksize = new Size(21, 21);
        Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, ksize);

        Imgproc.morphologyEx(bgImg, bgImg, Imgproc.MORPH_CLOSE, kernel);

        Size filter = new Size(21, 21);
        Imgproc.GaussianBlur(bgImg, bgImg, filter, 0, 0, Imgproc.BORDER_DEFAULT);
    }

    BackgroundSubtractorMOG MoG = new BackgroundSubtractorMOG();

    List<Mat> fg_masks = new ArrayList<Mat>();

    Imshow imsS = new Imshow("input ... ");
    Imshow imsF = new Imshow("background");

    // get a listing of files in that directory
    Imshow ims_diff = new Imshow("Difference");
    File dir = new File(IMAGE_FILES_DIRECTORY_PATH);
    File[] directoryListing = dir.listFiles();
    if (directoryListing != null) {
        for (File imgFile : directoryListing) {

            // if the file name ends with .jpg (JPEG) or .png (Portable Network Graphic)

            if ((imgFile.getName().endsWith(".png")) || (imgFile.getName().endsWith(".jpg"))) {
                // load an image from each file (read and decode image file)
                Mat inputImage = new Mat();
                Mat iImg = new Mat();
                Size filter = new Size(15, 15);
                iImg = Highgui.imread(IMAGE_FILES_DIRECTORY_PATH + "/" + imgFile.getName());
                Imgproc.resize(iImg, inputImage, frame);
                Imgproc.GaussianBlur(inputImage, inputImage, filter, 0, 0, Imgproc.BORDER_DEFAULT);
                //Imgproc.GaussianBlur(inputImage, inputImage, filter, 0, 0, Imgproc.BORDER_DEFAULT);
                //Imgproc.GaussianBlur(inputImage, inputImage, filter, 0, 0, Imgproc.BORDER_DEFAULT);
                Imgproc.medianBlur(inputImage, inputImage, 9);

                Mat fg_mask = new Mat();

                Mat fg_mask1 = new Mat();
                Mat fg_mask2 = new Mat();
                Mat fg_mask3 = new Mat();
                Mat fg_mask4 = new Mat();
                Mat fg_mask5 = new Mat();
                Mat fg_mask6 = new Mat();
                Mat fg_mask7 = new Mat();

                ArrayList<Integer> countAll = new ArrayList<Integer>();

                for (int i = 0; i < 7; i++) {
                    // add it to the background model with a learning rate of 0.1

                    MoG.apply(inputImage, backgroundImg.get(i), 0.1);

                    // extract the foreground mask (1 = foreground / 0 - background), 
                    // and convert/expand it to a 3-channel version of the same 

                    Imgproc.cvtColor(backgroundImg.get(i), backgroundImg.get(i), Imgproc.COLOR_GRAY2BGR);

                }

                // logically AND it with the original frame to extract colour 
                // pixel only in the foreground regions

                Core.bitwise_and(inputImage, backgroundImg.get(0), fg_mask1);
                Core.bitwise_and(inputImage, backgroundImg.get(1), fg_mask2);
                Core.bitwise_and(inputImage, backgroundImg.get(2), fg_mask3);
                Core.bitwise_and(inputImage, backgroundImg.get(3), fg_mask4);
                Core.bitwise_and(inputImage, backgroundImg.get(4), fg_mask5);
                Core.bitwise_and(inputImage, backgroundImg.get(5), fg_mask6);
                Core.bitwise_and(inputImage, backgroundImg.get(6), fg_mask7);

                for (int i = 0; i < 7; i++) {
                    countAll.add(countP(backgroundImg.get(i)));
                }

                double meanPixels = average(countAll);
                double[] temp = new double[5];
                for (int i = 0; i < 5; i++) {
                    temp[i] = Math.abs(countAll.get(i) - meanPixels);
                }

                double min = temp[0];
                int mark = 0;
                for (int i = 1; i < 5; i++) {
                    if (temp[i] < min) {
                        mark = i;
                        min = temp[i];
                    }
                }

                fg_mask = backgroundImg.get(mark);

                // Create a contour ZONE B top-left
                Point[] contourPoints1 = new Point[5];
                contourPoints1[0] = new Point(55, 22);
                contourPoints1[1] = new Point(200, 22);
                contourPoints1[2] = new Point(330, 175);
                contourPoints1[3] = new Point(200, 430);
                contourPoints1[4] = new Point(55, 110);

                // convert it to a java list of OpenCV MatOfPoint
                // objects as this is what the draw function requires

                MatOfPoint contour1 = new MatOfPoint(contourPoints1);
                List<MatOfPoint> contourList1 = new ArrayList<MatOfPoint>();
                contourList1.add(contour1);

                // Create a contour ZONE C top-right
                Point[] contourPoints2 = new Point[4];

                contourPoints2[0] = new Point(55, 130);
                contourPoints2[1] = new Point(195, 435);
                contourPoints2[2] = new Point(125, 570);
                contourPoints2[3] = new Point(55, 340);

                MatOfPoint contour2 = new MatOfPoint(contourPoints2);
                List<MatOfPoint> contourList2 = new ArrayList<MatOfPoint>();
                contourList2.add(contour2);

                // Create a contour ZONE A
                Point[] contourPoints3 = new Point[5];

                contourPoints3[0] = new Point(420, 22);
                contourPoints3[1] = new Point(465, 22);
                contourPoints3[2] = new Point(463, 295);
                contourPoints3[3] = new Point(190, 695);
                contourPoints3[4] = new Point(65, 695);

                MatOfPoint contour3 = new MatOfPoint(contourPoints3);
                List<MatOfPoint> contourList3 = new ArrayList<MatOfPoint>();
                contourList3.add(contour3);

                // Create a contour ZONE C button
                Point[] contourPoints4 = new Point[4];

                contourPoints4[0] = new Point(310, 545);
                contourPoints4[1] = new Point(463, 320);
                contourPoints4[2] = new Point(463, 695);
                contourPoints4[3] = new Point(400, 695);

                MatOfPoint contour4 = new MatOfPoint(contourPoints4);
                List<MatOfPoint> contourList4 = new ArrayList<MatOfPoint>();
                contourList4.add(contour4);

                // Create a contour ZONE b right
                Point[] contourPoints5 = new Point[3];

                contourPoints5[0] = new Point(300, 555);
                contourPoints5[2] = new Point(385, 695);
                contourPoints5[1] = new Point(200, 695);

                MatOfPoint contour5 = new MatOfPoint(contourPoints5);
                List<MatOfPoint> contourList5 = new ArrayList<MatOfPoint>();
                contourList5.add(contour5);

                // Create a contour ZONE RACT
                Point[] contourPoints6 = new Point[4];

                contourPoints6[0] = new Point(210, 22);
                contourPoints6[1] = new Point(285, 22);
                contourPoints6[2] = new Point(275, 100);
                contourPoints6[3] = new Point(225, 100);

                MatOfPoint contour6 = new MatOfPoint(contourPoints6);
                List<MatOfPoint> contourList6 = new ArrayList<MatOfPoint>();
                contourList1.add(contour6);

                // Create a contour ZONE RACT
                Point[] contourPoints7 = new Point[4];

                contourPoints7[0] = new Point(400, 22);
                contourPoints7[1] = new Point(465, 22);
                contourPoints7[2] = new Point(465, 180);
                contourPoints7[3] = new Point(400, 125);

                MatOfPoint contour7 = new MatOfPoint(contourPoints7);
                List<MatOfPoint> contourList7 = new ArrayList<MatOfPoint>();
                contourList7.add(contour7);

                // Create a contour ZONE RACT
                Point[] contourPoints8 = new Point[3];

                contourPoints8[0] = new Point(0, 340);
                contourPoints8[1] = new Point(0, 695);
                contourPoints8[2] = new Point(150, 695);

                MatOfPoint contour8 = new MatOfPoint(contourPoints8);
                List<MatOfPoint> contourList8 = new ArrayList<MatOfPoint>();
                contourList8.add(contour8);

                //put point to the list
                List<Point> list1 = new ArrayList<Point>();
                List<Point> list2 = new ArrayList<Point>();
                List<Point> list3 = new ArrayList<Point>();
                List<Point> list4 = new ArrayList<Point>();
                List<Point> list5 = new ArrayList<Point>();
                List<Point> list6 = new ArrayList<Point>();
                List<Point> list7 = new ArrayList<Point>();
                List<Point> list8 = new ArrayList<Point>();

                Point[] contourPoints10 = new Point[5];

                contourPoints10[0] = new Point(22, 55);
                contourPoints10[1] = new Point(22, 200);
                contourPoints10[2] = new Point(175, 330);
                contourPoints10[3] = new Point(430, 200);
                contourPoints10[4] = new Point(110, 55);

                // convert it to a java list of OpenCV MatOfPoint
                // objects as this is what the draw function requires

                MatOfPoint contour10 = new MatOfPoint(contourPoints10);
                List<MatOfPoint> contourList10 = new ArrayList<MatOfPoint>();
                contourList10.add(contour10);

                // Create a contour ZONE C top-right
                Point[] contourPoints20 = new Point[4];

                contourPoints20[0] = new Point(130, 55);
                contourPoints20[1] = new Point(435, 195);
                contourPoints20[2] = new Point(570, 125);
                contourPoints20[3] = new Point(340, 55);

                MatOfPoint contour20 = new MatOfPoint(contourPoints20);
                List<MatOfPoint> contourList20 = new ArrayList<MatOfPoint>();
                contourList20.add(contour20);

                // Create a contour ZONE A
                Point[] contourPoints30 = new Point[5];

                contourPoints30[0] = new Point(22, 420);
                contourPoints30[1] = new Point(22, 465);
                contourPoints30[2] = new Point(295, 463);
                contourPoints30[3] = new Point(695, 190);
                contourPoints30[4] = new Point(695, 65);

                MatOfPoint contour30 = new MatOfPoint(contourPoints30);
                List<MatOfPoint> contourList30 = new ArrayList<MatOfPoint>();
                contourList30.add(contour30);

                // Create a contour ZONE C button
                Point[] contourPoints40 = new Point[4];

                contourPoints40[0] = new Point(545, 310);
                contourPoints40[1] = new Point(320, 463);
                contourPoints40[2] = new Point(695, 463);
                contourPoints40[3] = new Point(695, 400);

                MatOfPoint contour40 = new MatOfPoint(contourPoints40);
                List<MatOfPoint> contourList40 = new ArrayList<MatOfPoint>();
                contourList40.add(contour40);

                // Create a contour ZONE b right
                Point[] contourPoints50 = new Point[3];

                contourPoints50[0] = new Point(555, 300);
                contourPoints50[2] = new Point(695, 385);
                contourPoints50[1] = new Point(695, 200);

                MatOfPoint contour50 = new MatOfPoint(contourPoints50);
                List<MatOfPoint> contourList50 = new ArrayList<MatOfPoint>();
                contourList50.add(contour50);

                // Create a contour ZONE RACT
                Point[] contourPoints60 = new Point[4];

                contourPoints60[0] = new Point(22, 210);
                contourPoints60[1] = new Point(22, 285);
                contourPoints60[2] = new Point(100, 275);
                contourPoints60[3] = new Point(100, 225);

                MatOfPoint contour60 = new MatOfPoint(contourPoints60);
                List<MatOfPoint> contourList60 = new ArrayList<MatOfPoint>();
                contourList60.add(contour60);

                // Create a contour ZONE RACT
                Point[] contourPoints70 = new Point[4];

                contourPoints70[0] = new Point(22, 400);
                contourPoints70[1] = new Point(22, 465);
                contourPoints70[2] = new Point(180, 465);
                contourPoints70[3] = new Point(125, 400);

                MatOfPoint contour70 = new MatOfPoint(contourPoints70);
                List<MatOfPoint> contourList70 = new ArrayList<MatOfPoint>();
                contourList70.add(contour70);

                // Create a contour ZONE RACT
                Point[] contourPoints80 = new Point[3];

                contourPoints80[0] = new Point(340, 0);
                contourPoints80[1] = new Point(695, 0);
                contourPoints80[2] = new Point(695, 150);

                MatOfPoint contour80 = new MatOfPoint(contourPoints80);
                List<MatOfPoint> contourList80 = new ArrayList<MatOfPoint>();
                contourList80.add(contour80);

                Imgproc.drawContours(fg_mask, contourList10, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList20, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList30, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList40, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList50, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList60, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList70, -1, new Scalar(255, 255, 255), 2);
                Imgproc.drawContours(fg_mask, contourList80, -1, new Scalar(255, 255, 255), 2);

                Point point = new Point();
                for (int row = 0; row < fg_mask.rows(); row++) {
                    for (int col = 0; col < fg_mask.cols(); col++) {

                        point = new Point(row, col);
                        // perform point in polygon test
                        MatOfPoint2f contourPoint1f = new MatOfPoint2f(contourPoints1);
                        MatOfPoint2f contourPoint2f = new MatOfPoint2f(contourPoints2);
                        MatOfPoint2f contourPoint3f = new MatOfPoint2f(contourPoints3);
                        MatOfPoint2f contourPoint4f = new MatOfPoint2f(contourPoints4);
                        MatOfPoint2f contourPoint5f = new MatOfPoint2f(contourPoints5);
                        MatOfPoint2f contourPoint6f = new MatOfPoint2f(contourPoints6);
                        MatOfPoint2f contourPoint7f = new MatOfPoint2f(contourPoints7);
                        MatOfPoint2f contourPoint8f = new MatOfPoint2f(contourPoints8);

                        if (Imgproc.pointPolygonTest(contourPoint1f, point, false) >= 0) {
                            list1.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint2f, point, false) >= 0) {
                            list2.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint3f, point, false) >= 0) {
                            list3.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint4f, point, false) >= 0) {
                            list4.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint5f, point, false) >= 0) {
                            list5.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint6f, point, false) >= 0) {
                            list6.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint7f, point, false) >= 0) {
                            list7.add(point);
                        }
                        if (Imgproc.pointPolygonTest(contourPoint8f, point, false) >= 0) {
                            list8.add(point);
                        }

                    }

                }

                boolean flag[] = { false, false, false, false, false, false, false };

                int events = 0;
                String events_name = "";

                int count1 = 0;
                for (Point p : list1) {
                    int x1 = (int) p.x;
                    int y1 = (int) p.y;
                    double[] n = fg_mask.get(x1, y1);
                    double value1 = n[0];
                    if (value1 == 255.0) {
                        count1++;
                    }
                }
                System.out.println(" 1 " + count1);

                if (count1 > 2000) {
                    flag[0] = true;
                }

                int count2 = 0;
                for (Point p : list2) {
                    int x2 = (int) p.x;
                    int y2 = (int) p.y;
                    double[] n = fg_mask.get(x2, y2);
                    double value2 = n[0];
                    if (value2 == 255.0) {
                        count2++;
                    }
                }
                System.out.println(" 2 " + count2);

                if (count2 > 1500) {
                    flag[1] = true;
                }

                int count3 = 0;
                for (Point p : list3) {
                    int x3 = (int) p.x;
                    int y3 = (int) p.y;
                    double[] n = fg_mask.get(x3, y3);
                    double value3 = n[0];
                    if (value3 == 255.0) {
                        count3++;
                    }
                }
                System.out.println(" 3 " + count3);

                if (count3 > 20000) {
                    flag[4] = true;
                }
                if (count3 > 4000) {
                    flag[2] = true;
                }

                int count4 = 0;
                for (Point p : list4) {
                    int x4 = (int) p.x;
                    int y4 = (int) p.y;
                    double[] n = fg_mask.get(x4, y4);
                    double value4 = n[0];
                    if (value4 == 255.0) {
                        count4++;
                    }
                }
                System.out.println(" 4 " + count4);

                if (count4 > 1700) {
                    flag[1] = true;
                }

                int count5 = 0;
                for (Point p : list5) {
                    int x5 = (int) p.x;
                    int y5 = (int) p.y;
                    double[] n = fg_mask.get(x5, y5);
                    double value5 = n[0];
                    if (value5 == 255.0) {
                        count5++;
                    }
                }
                System.out.println(" 5 " + count5);

                if (count5 > 1000) {
                    flag[0] = true;
                }

                int count6 = 0;
                for (Point p : list6) {
                    int x6 = (int) p.x;
                    int y6 = (int) p.y;
                    double[] n = fg_mask.get(x6, y6);
                    double value6 = n[0];
                    if (value6 == 255.0) {
                        count6++;
                    }
                }
                System.out.println(" 6 " + count6);

                if (count6 > 750) {
                    flag[3] = true;
                }

                int count7 = 0;
                for (Point p : list7) {
                    int x7 = (int) p.x;
                    int y7 = (int) p.y;
                    double[] n = fg_mask.get(x7, y7);
                    double value7 = n[0];
                    if (value7 == 255.0) {
                        count7++;
                    }
                }
                System.out.println(" 7 " + count7);

                if (count7 > 1100) {
                    flag[5] = true;
                }

                int count8 = 0;
                for (Point p : list8) {
                    int x8 = (int) p.x;
                    int y8 = (int) p.y;
                    double[] n = fg_mask.get(x8, y8);
                    double value8 = n[0];
                    if (value8 == 255.0) {
                        count8++;
                    }
                }
                System.out.println(" 8 " + count8);

                if (count8 > 2000) {
                    flag[6] = true;
                }

                imsS.showImage(inputImage);
                imsF.showImage(fg_mask);
                imsF.showImage(backgroundImg.get(0));
                System.out.print(imgFile.getName() + " ");

                //Identifying events
                if ((!flag[0]) && (!flag[1]) && (!flag[2]) && (!flag[3]) && (!flag[4])) {
                    System.out.print("Empty ");
                } else if (flag[4] || (!flag[4] && flag[5]) || (!flag[4] && flag[6])) {
                    System.out.print("Train ");
                }

                if (flag[0] && !(flag[4] || (!flag[4] && flag[5]) || (!flag[4] && flag[6]))) {
                    System.out.print("Enter ");
                }

                if (flag[1] && !(flag[4] || (!flag[4] && flag[5]) || (!flag[4] && flag[6]))) {
                    System.out.print("Leave ");
                }

                if ((flag[2] && (!flag[5]) && (!flag[6]))
                        && !(flag[3] && (!(flag[4] || (!flag[4] && flag[5]) || (!flag[4] && flag[6]))))) {
                    System.out.print("On track ");
                }

                if (flag[3] && (!(flag[4] || (!flag[4] && flag[5]) || (!flag[4] && flag[6])))) {
                    System.out.print("Barrier");
                }

                System.out.println();

                Thread.sleep(40);
            }
        }
    } else {

        System.out.println("Could not get listing for directory: " + IMAGE_FILES_DIRECTORY_PATH);
    }
}

From source file:video.PictureView.java

public static BufferedImage setCross(BufferedImage img) {
    Mat imgMat;//from  w w  w .  ja  v  a2s.c  o  m
    imgMat = bufferedImageToMat(img);
    Imgproc.circle(imgMat, new Point(imgMat.width() / 2, imgMat.height() / 2), 4,
            new Scalar(255, 49, 255, 255));
    img = mat2Img(imgMat);
    return img;
}

From source file:vista.frmPrincipal.java

private void initCamara() {
    hilo = new Thread() {

        public void run() {
            if (cap.isOpened()) {
                while (true) {
                    try {
                        //Thread.sleep(100);
                        cap.read(imagen);
                        if (!imagen.empty()) {
                            Core.putText(imagen, Extra.retornaFecha(), new Point(10, 25), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            Core.putText(imagen, Extra.retornaHora(), new Point(10, 55), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            faceDetector.detectMultiScale(imagen, faceDetections);
                            for (Rect rect : faceDetections.toArray()) {
                                //Core.rectangle(imagen, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
                                Core.rectangle(imagen, new Point(rect.x, rect.y),
                                        new Point(rect.x + rect.width, rect.y + rect.height),
                                        new Scalar(0, 255, 0), 2);
                                Core.line(imagen, new Point(rect.x + rect.width / 2, rect.y + rect.height),
                                        new Point(imagen.width() / 2, imagen.height()), new Scalar(0, 255, 0),
                                        3);

                                //    Imgproc.adaptiveThreshold(imagen, imagen, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 15, 4);
                                //      Imgproc.Canny(imagen,imagen, 15, 34);
                                //     Imgproc.threshold(imagen, imagen, -1, 255, 1);
                                System.out.println("valor?");
                                //   Imgproc.threshold(imagen, imagen, -1, 255, Imgproc.THRESH_OTSU);

                                setPlacaImage(convertir(Sub_Image(imagen, rect)));

                                setPlacaFiltradaImage(
                                        threshold(convertirBufferedImage(Sub_Image(imagen, rect))));
                                try {
                                    String result = "ABC-0123";
                                    //  result = instance.doOCR(convertirBufferedImage(Sub_Image(imagen, rect)));
                                    //result="XBU-445   ";
                                    System.out.println(result);
                                    result = Extra.posible_placa(result);
                                    //    result=Extra.posible_placa(result);
                                    lista_placas.add(result);
                                    // System.out.println(result);
                                } catch (Exception e) {
                                    //   System.err.println(e.getMessage());
                                }/* w  ww  . j  av a2  s.c  om*/
                            }
                            setImage(convertir(imagen));
                        }
                    } catch (Exception ex) {
                        //     Logger.getLogger(frmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    };
    hilo.start();
}

From source file:vista.frmPrincipalConteoCars.java

private void initVideo() {
    hilo_initCamara = new Thread() {
        public void run() {
            Point p1 = new Point(12, 110);
            Point p2 = new Point(220, 110);

            Point pfs1 = new Point(30, 150);
            Point pfs2 = new Point(30, 300);

            Point pfb1 = new Point(620, 150);
            Point pfb2 = new Point(620, 300);

            Point pc = new Point();

            boolean baja = false;
            video.open("video1.avi");
            video.read(imagen);/*from   w  ww. ja  v a 2 s .  c o  m*/
            while (!imagen.empty()) {
                try {
                    video.read(imagen);
                    Core.putText(imagen, Extra.retornaFecha(), new Point(10, 10), 1, 1, new Scalar(0, 255, 0),
                            2);
                    Core.putText(imagen, Extra.retornaHora(), new Point(10, 30), 1, 1, new Scalar(0, 255, 0),
                            2);
                    Core.putText(imagen, "# Suben: " + contador_sube, new Point(150, 10), 1, 1,
                            new Scalar(0, 255, 0), 2);
                    Core.putText(imagen, "# Bajan: " + contador_baja, new Point(150, 30), 1, 1,
                            new Scalar(0, 255, 0), 2);
                    faceDetector.detectMultiScale(imagen, faceDetections);
                    Core.line(imagen, p1, p2, new Scalar(0, 255, 0), 3);
                    int n_face = 0;
                    Point anterior = new Point(0, 0);
                    for (Rect rect : faceDetections.toArray()) {
                        n_face++;
                        //Core.rectangle(imagen, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
                        pc.x = rect.x + rect.width / 2;
                        pc.y = rect.y + rect.height / 2;
                        haz_puntos.add(pc);
                        Core.putText(imagen, "#: " + n_face, new Point(rect.x - 2, rect.y - 2), 1, 1,
                                new Scalar(0, 255, 0), 2);
                        Core.rectangle(imagen, new Point(rect.x, rect.y),
                                new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0), 1);
                        Core.circle(imagen, pc, 2, new Scalar(0, 0, 255), 3);
                        //   Core.line(imagen, new Point(rect.x + rect.width / 2, rect.y + rect.height), new Point(imagen.width() / 2, imagen.height()), new Scalar(0, 255, 0), 3);

                        if (pc.y < p1.y) {
                            baja = true;
                        }

                        if (pc.y > p1.y) {
                            baja = false;
                        }

                        if ((baja == true) && (pc.y == p1.y)) {
                            contador_baja++;
                        }

                        if ((pc.y == p1.y) && (baja == false)) {
                            contador_sube++;
                        }
                        anterior = pc;

                    }
                    setImage(convertir(imagen));
                    Thread.sleep(50);
                } catch (InterruptedException ex) {
                    //     Logger.getLogger(frmPrincipalConteoCars.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    };
    hilo_initCamara.start();
}

From source file:vista.frmPrincipalConteoCars.java

private void initCamara() {

    hilo = new Thread() {

        public void run() {
            Point p1 = new Point(50, 400);
            Point p2 = new Point(600, 400);

            Point pfs1 = new Point(30, 150);
            Point pfs2 = new Point(30, 300);

            Point pfb1 = new Point(620, 150);
            Point pfb2 = new Point(620, 300);

            Point pc = new Point();

            boolean baja = false;
            if (camara.isOpened()) {
                while (true) {
                    try {
                        //Thread.sleep(100);
                        camara.read(imagen);
                        if (!imagen.empty()) {

                            Core.putText(imagen, Extra.retornaFecha(), new Point(10, 25), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            Core.putText(imagen, Extra.retornaHora(), new Point(10, 55), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            Core.putText(imagen, "# Suben: " + contador_sube, new Point(250, 25), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            Core.putText(imagen, "# Bajan: " + contador_baja, new Point(250, 55), 1, 2,
                                    new Scalar(0, 255, 0), 3);
                            faceDetector.detectMultiScale(imagen, faceDetections);
                            Core.line(imagen, p1, p2, new Scalar(0, 255, 0), 3);
                            int n_face = 0;
                            Point anterior = new Point(0, 0);
                            for (Rect rect : faceDetections.toArray()) {
                                n_face++;
                                //Core.rectangle(imagen, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
                                pc.x = rect.x + rect.width / 2;
                                pc.y = rect.y + rect.height / 2;
                                haz_puntos.add(pc);
                                Core.putText(imagen, "#: " + n_face, new Point(rect.x - 20, rect.y - 20), 1, 2,
                                        new Scalar(0, 255, 0), 3);
                                Core.rectangle(imagen, new Point(rect.x, rect.y),
                                        new Point(rect.x + rect.width, rect.y + rect.height),
                                        new Scalar(0, 255, 0), 2);
                                Core.circle(imagen, pc, 5, new Scalar(0, 0, 255), 6);

                                //    Core.line(imagen, new Point(rect.x + rect.width / 2, rect.y + rect.height), new Point(imagen.width() / 2, imagen.height()), new Scalar(0, 255, 0), 3);
                                if (pc.y < p1.y) {
                                    baja = true;

                                }//www. j av a  2 s.c  om

                                if (pc.y > p1.y) {
                                    baja = false;
                                }

                                if ((baja == true) && (pc.y == p1.y)) {

                                    Core.line(imagen, anterior, pc, new Scalar(0, 0, 255), 3);
                                    Core.line(imagen, p1, p2, new Scalar(0, 0, 255), 3);
                                    Core.line(imagen, pfs1, pfs2, new Scalar(255, 0, 0), 3);
                                    Core.line(imagen, pfb1, pfb2, new Scalar(255, 0, 0), 3);
                                    Core.line(imagen, pfs2, new Point(pfs2.x + 10, pfs2.y - 10),
                                            new Scalar(255, 0, 0), 3);
                                    Core.line(imagen, pfb2, new Point(pfb2.x + 10, pfb2.y - 10),
                                            new Scalar(255, 0, 0), 3);
                                    Core.line(imagen, pfs2, new Point(pfs2.x - 10, pfs2.y - 10),
                                            new Scalar(255, 0, 0), 3);
                                    Core.line(imagen, pfb2, new Point(pfb2.x - 10, pfb2.y - 10),
                                            new Scalar(255, 0, 0), 3);
                                    contador_baja++;
                                }

                                if ((pc.y == p1.y) && (baja == false)) {
                                    Core.line(imagen, p1, p2, new Scalar(0, 0, 255), 5);
                                    Core.line(imagen, pfs1, pfs2, new Scalar(0, 0, 255), 5);
                                    Core.line(imagen, pfb1, pfb2, new Scalar(0, 0, 255), 5);
                                    Core.line(imagen, pfb1, new Point(pfb1.x + 10, pfb1.y + 10),
                                            new Scalar(0, 0, 255), 3);
                                    Core.line(imagen, pfs1, new Point(pfs1.x + 10, pfs1.y + 10),
                                            new Scalar(0, 0, 255), 3);
                                    Core.line(imagen, pfb1, new Point(pfb1.x - 10, pfb1.y + 10),
                                            new Scalar(0, 0, 255), 3);
                                    Core.line(imagen, pfs1, new Point(pfs1.x - 10, pfs1.y + 10),
                                            new Scalar(0, 0, 255), 3);
                                    contador_sube++;
                                }
                                anterior = pc;

                            }
                            setImage(convertir(imagen));
                        }
                    } catch (Exception ex) {
                        //     Logger.getLogger(frmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    };
    hilo.start();
}

From source file:webcamfacedetect.Processor.java

public Mat detect(Mat inputframe) {
    Mat mRgba = new Mat();
    Mat mGrey = new Mat();
    MatOfRect faces = new MatOfRect();
    inputframe.copyTo(mRgba);/*from   w ww  .ja  v  a  2s . com*/
    inputframe.copyTo(mGrey);
    Imgproc.cvtColor(mRgba, mGrey, Imgproc.COLOR_BGR2GRAY);
    Imgproc.equalizeHist(mGrey, mGrey);
    face_cascade.detectMultiScale(mGrey, faces);
    System.out.println(String.format("Detected %s faces.", faces.toArray().length));
    for (Rect rect : faces.toArray()) {
        Point center = new Point(rect.x + rect.width * 0.5, rect.y + rect.height * 0.5);
        Imgproc.ellipse(mRgba, center, new Size(rect.width * 0.5, rect.height * 0.5), 0, 0, 360,
                new Scalar(255, 0, 255), 4, 8, 0);
    }
    return mRgba;
}