Example usage for org.opencv.core Mat Mat

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

Introduction

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

Prototype

public Mat() 

Source Link

Usage

From source file:com.wallerlab.processing.utilities.ImageUtils.java

License:BSD License

public static Mat toMat(Bitmap bmp) {
    Mat mat = new Mat();
    Utils.bitmapToMat(bmp, mat);
    return mat;
}

From source file:Comun.Imagen.java

public String dividirImagen(String nombreCarpeta) {
    StringBuilder SB = new StringBuilder();

    //Crea la carpeta donde alojar las imagenes
    this.nombreCarpeta = nombreCarpeta;
    File carpeta = new File(nombreCarpeta);
    if (carpeta.mkdir()) {
        Mat imgAux = new Mat();
        //Convertir la imagen en escala de grises a binario
        threshold(imagen, imgAux, 128, 255, THRESH_BINARY | THRESH_OTSU);

        //Dibuja los bordes
        double umbral = 100;
        Canny(imgAux, imgAux, umbral, umbral * 2);

        //Lista que guarda los puntos de los contornos
        LinkedList<MatOfPoint> contornos = new LinkedList<>();
        Mat jerarquia = new Mat();

        //Detecto los contornos
        findContours(imgAux, contornos, jerarquia, RETR_TREE, CHAIN_APPROX_SIMPLE);

        Rect contorno;//from  w  ww  .  java  2s. co m

        if (!contornos.isEmpty()) {
            SB.append("Se han encontrado ").append(contornos.size()).append(" contornos -");

            double areaProm = 0;
            for (int i = 0; i < contornos.size(); i++) {
                contorno = boundingRect(contornos.get(i));
                areaProm += contorno.area();
            }

            //Asigna que para ser un contorno valido debe ser mayor al 10% del segundo mayor
            areaProm = (areaProm / contornos.size()) * 0.25;
            ArrayList<Rect> contornosFiltrados = new ArrayList<>();

            //Guarda las letras detectadas
            for (int i = 0; i < contornos.size(); i++) {

                contorno = boundingRect(contornos.get(i));
                //Verifica que supere el limite
                if (contorno.area() > areaProm) {
                    contornosFiltrados.add(contorno);
                }
            }
            //Ordeno los contornos de mayor a menor
            Mergesort merge = new Mergesort(contornosFiltrados);
            merge.ordenar();
            contornosFiltrados = merge.getV();

            //Filtro solo los contornos que no se superponen con otro
            ArrayList<Rect> contornosFinal = new ArrayList<>();
            boolean bandera = false;
            for (Rect recta : contornosFiltrados) {
                for (Rect c : contornosFinal) {
                    if (c.contains(recta.tl()) || c.contains(recta.br())) {
                        bandera = true;
                        break;
                    }
                }
                if (!bandera) {
                    //Agrego el contorno a la lista final de contornos
                    contornosFinal.add(recta);
                    //Guardo la imagen en la carpeta
                    this.guardarImagen(new Mat(imagen, recta), contornosFinal.size());

                    //La marca en la imagen principal
                    rectangle(imagen, new Point(recta.x, recta.y),
                            new Point(recta.x + recta.width, recta.y + recta.height), new Scalar(0, 255, 0));
                }
                bandera = false;
            }

            SB.append("Contornos Validos: ").append(contornosFinal.size());

        } else {
            SB.append("No se ha encontrado ningun contorno");
        }
    } else {
        SB.append("No se pudo crear la carpeta");
    }
    this.guardarImagen(imagen, 0);
    return SB.toString();
}

From source file:ConfOpenCV_Java.ConfOpenCV_Java.java

/**
 * @param args the command line arguments
 *///from www  . j  a  v  a  2 s .  c  om
public static void main(String[] args) {

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    System.out.println("Welcome to OpenCV " + Core.VERSION);
    String outputFile = "mivideo.avi";
    VideoCapture vc = new VideoCapture(0);
    System.out.println("fps= " + Videoio.CAP_PROP_FPS);

    //vc.set(5, 50);
    //System.out.println(vc.set(3, 1280));
    //vc.set(4, 720);
    double fps = 30;
    System.out.println(fps);

    Size frameSize = new Size((int) vc.get(Videoio.CV_CAP_PROP_FRAME_WIDTH),
            (int) vc.get(Videoio.CV_CAP_PROP_FRAME_HEIGHT));
    System.out.println(frameSize);

    VideoWriter vw = new VideoWriter(outputFile, VideoWriter.fourcc('X', '2', '6', '4'), fps, frameSize, true);
    //System.out.println(VideoWriter.fourcc('X', '2', '6', '4'));
    //System.out.println(vw.isOpened());
    Mat frame = new Mat();

    //para cargar fotos
    //Imgcodecs.imread(outputFile)
    //Imgcodecs.imwrite(outputFile, m);
    int numFramesRemaining = 5 * (int) fps;

    NewJFrame ventana = new NewJFrame();
    ventana.setVisible(true);
    g = ventana.getjPanel1().getGraphics();
    ventana.pack();
    ventana.setVisible(true);

    while (vc.read(frame) && numFramesRemaining > 0) {
        vw.write(frame);
        mostrarImagen(frame);
        numFramesRemaining--;
    }

    vw.release();
    vc.release();
    ventana.dispose();

}

From source file:contador_de_moedas.Reconhecimento.java

public Mat CalculaHistograma(Mat mask, Mat img_Original) {
    // Converte para um tipo de imagem com canais separados
    List<Mat> imagesList = new ArrayList<>();
    imagesList.add(img_Original);// w  w w . j  ava  2  s .c om
    // Parametros do calcHist
    Mat histograma = new Mat();
    int h_bins = 30;
    int s_bins = 32;
    MatOfInt mHistSize = new MatOfInt(h_bins, s_bins);
    MatOfFloat mRanges = new MatOfFloat(0, 179, 0, 255);
    MatOfInt mChannels = new MatOfInt(0, 1);
    // Calcula o histograma
    Imgproc.calcHist(imagesList, mChannels, mask, histograma, mHistSize, mRanges, false);
    // Normalizao necessria para ajustar valores
    Core.normalize(histograma, histograma, 0, 255, Core.NORM_MINMAX, -1, new Mat());

    return (histograma);
}

From source file:contador_de_moedas.Segmentacao.java

private Mat Binarizar(Mat imgOriginal) {
    Mat Cinza = new Mat();
    Mat Binarizada = new Mat();
    // convert to grayscale
    Imgproc.cvtColor(imgOriginal, Cinza, Imgproc.COLOR_BGR2GRAY);
    //Binarizacao de imagem 
    Imgproc.adaptiveThreshold(Cinza, Binarizada, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV,
            15, 20);//from   ww w .j a va  2s .  c om
    return (Binarizada);
}

From source file:contador_de_moedas.Segmentacao.java

/**
 * Apply Canny/* w  w  w . j  a  v a 2 s  .c  om*/
 *
 * @param img the current frame
 * @return an image elaborated with Canny
 */
private Mat doCanny(Mat img) {
    // inicia
    Mat grayImage = new Mat();
    Mat detectedEdges = new Mat();

    // Reduzir o rudo com um kernel 3x3
    Imgproc.blur(grayImage, detectedEdges, new Size(3, 3));

    //Detector canny, com relao de menor: limite de superior de 3: 1
    Imgproc.Canny(detectedEdges, detectedEdges, this.threshold.getValue(), this.threshold.getValue() * 3);

    //Usando Canny e exibindo o resultadosada como uma mscara. 
    Mat dest = new Mat();
    img.copyTo(dest, detectedEdges);

    return dest;
}

From source file:cubesolversimulator.VisualInputForm.java

private void getContour() {
    Mat dilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(7, 7));

    Imgproc.dilate(edge, edge, dilate);/*from   ww  w .j  a va2 s.c  o m*/
    Imgproc.dilate(edge, edge, dilate);

    Highgui.imwrite("dilate.jpg", edge);

    List<MatOfPoint> contours = new ArrayList<>();

    Imgproc.findContours(edge, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
    Imgproc.drawContours(contour, contours, -1, new Scalar(255, 255, 255));

    Highgui.imwrite("Contour.jpg", contour);

    img4 = new JLabel("");
    img4.setSize(jPanel7.getSize());
    image4 = new ImageIcon(new ImageIcon("D:\\Project_work\\CubeSolverSimulator\\dilate.jpg").getImage()
            .getScaledInstance(img4.getWidth(), img4.getHeight(), Image.SCALE_FAST));
    img4.setIcon(image4);
    img4.repaint();
    jPanel7.add(img4);
    jPanel7.repaint();
    findRect(contours);
}

From source file:cv.recon.controller.OutputDisplayController.java

License:Open Source License

@Override
public void initialize(URL url, ResourceBundle rb) {
    fgMask = new Mat();
    output = new Mat();

    kernel = Imgproc.getStructuringElement(Imgproc.MORPH_ELLIPSE, new Size(10, 10));
}

From source file:cv.recon.controller.RootLayoutController.java

License:Open Source License

@Override
public void initialize(URL url, ResourceBundle rb) {
    vid = new VideoCapture();
    src = new Mat();

    initInputDisplay();//from w  w w.j av  a2 s .c  o m
    initOutputDisplay();
    initChart();
}

From source file:cv.recon.util.CannyDetector.java

License:Open Source License

/**
 * Apply Canny detector to Mat.//from   w w  w.ja v a 2s. com
 * @param src Input Mat
 * @param dst Output Mat
 */
public void detect(Mat src, Mat dst) {
    Mat src_gray = new Mat();
    Mat detected_edges = new Mat();

    Imgproc.cvtColor(src, src_gray, Imgproc.COLOR_RGB2GRAY);
    Imgproc.blur(src_gray, detected_edges, new Size(3, 3));
    Imgproc.Canny(detected_edges, detected_edges, lowThreshold, lowThreshold * ratio, kernel_size, true);

    dst.setTo(new Scalar(0));
    src.copyTo(dst, detected_edges);
}