Example usage for org.opencv.core Mat size

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

Introduction

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

Prototype

public Size size() 

Source Link

Usage

From source file:tisir.forms.ImageObjetForm.java

public void traitementImages(String nomImage, String nomFichier, String dossierDestinationImage,
        Map<String, Mat> listHierarchies, Map<String, Mat> listContours) {
    //System.out.println("Matrice de l'image :" + Imgcodecs.imread(nomImage.toString()).dump());
    System.out.println("chemin d'accs  l'image : " + nomImage);
    Mat matriceImage = Imgcodecs.imread(nomImage); //Chargement de l'image dans une matrice carre
    Mat matImageArecuperer1 = new Mat();
    Mat matImageArecuperer2 = new Mat();
    Mat matImageArecuperer = new Mat();
    Mat matFinaleOperateurMorphologiq = new Mat();

    System.out.printf("%s", "Conversion de la matrice openCV d'image en BufferedImage (java) en cours ...");

    System.out.printf("MatriceImage.channels () : %s\n", matriceImage.channels());

    int elementBufferedImage = BufferedImage.TYPE_BYTE_GRAY;
    if (matriceImage.channels() > 1) {
        Mat matImageSansBruit = new Mat();
        Mat matImageSansBruitEnHSV = new Mat();

        //Suppression de bruit dans l'image encours
        Imgproc.bilateralFilter(matriceImage, matImageSansBruit, 5, 175, 175);
        ///Imgproc.blur(matriceImage, matImageSansBruit, new Size(15,15));

        //Conversion en HSV
        Imgproc.cvtColor(matImageSansBruit, matImageSansBruitEnHSV, Imgproc.COLOR_BGR2HSV);
        elementBufferedImage = BufferedImage.TYPE_3BYTE_BGR;
        matriceImage = matImageSansBruitEnHSV; //Cette matrice est ncessaire pour la dtection
    }//  w w w  .j  av  a  2  s  .  co m

    //Rcupration des seuils min et max de H, S et V avant les couleurs vert
    Scalar valHSVmin = new Scalar(VALEURDEBUTHUE, VALEURDEBUTSATURATION, VALEURDEBUTVALUE);
    Scalar valHSVmax = new Scalar(VALEURFINHUE, VALEURFINSATURATION, VALEURFINVALUE);

    //Rcupration des seuils min et max de H, S et V aprs les couleurs vert
    Scalar valHSVmin2 = new Scalar(VALEURDEBUTHUE2, VALEURDEBUTSATURATION, VALEURDEBUTVALUE);
    Scalar valHSVmax2 = new Scalar(VALEURFINHUE2, VALEURFINSATURATION, VALEURFINVALUE);

    System.out.printf("Intervalle de valeurs fix de HUE avant les couleurs  dominance vert : %s%s%s",
            String.valueOf(valHSVmin.val[0]), " - ", String.valueOf(valHSVmax.val[0]));
    System.out.printf("Intervalle de valeurs fix de HUE aprs les couleurs  dominance vert : %s%s%s",
            String.valueOf(valHSVmin2.val[0]), " - ", String.valueOf(valHSVmax2.val[0]));
    System.out.printf("Intervalle de valeurs fix de SATURATION : %s%s%s", String.valueOf(valHSVmin.val[1]),
            " - ", String.valueOf(valHSVmax.val[1]));
    System.out.printf("Intervalle de valeurs fix de HUE : %s%s%s", String.valueOf(valHSVmin.val[2]), " - ",
            String.valueOf(valHSVmax.val[2]));

    //////////Filtre pour laisser passer uniquement les couleurs ne contenant pas vert
    Core.inRange(matriceImage, valHSVmin, valHSVmax, matImageArecuperer1);
    Core.inRange(matriceImage, valHSVmin2, valHSVmax2, matImageArecuperer2);

    //On associe les lments de "matImageArecuperer1"  ceux de "matImageArecuperer2"
    Core.add(matImageArecuperer1, matImageArecuperer2, matImageArecuperer);

    //Affichage  l'cran de donnes binaires de l'image en cours
    byte[] byteImage = new byte[matriceImage.channels() * matriceImage.cols() * matriceImage.rows()];
    matriceImage.get(0, 0, byteImage);
    ///System.out.println(nomFichier + " :: byteImage en cours : " + Arrays.toString(byteImage));

    //criture des donnes de l'image encours "matriceImage" dans un BufferedImage
    BufferedImage imageEncours = new BufferedImage(matriceImage.cols(), matriceImage.rows(),
            elementBufferedImage);
    imageEncours.getRaster().setDataElements(0, 0, matriceImage.cols(), matriceImage.rows(), byteImage);

    //criture de l'image sur disque
    long id = System.currentTimeMillis();
    String n = nomFichier;
    n = n + "ImageSansBruitEnHSV" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageEncours, n, dossierDestinationImage);

    //criture des donnes de l'image  reccuprer "matImageArecuperer" dans un BufferedImage
    byte[] byteImageArecuperer = new byte[matImageArecuperer.channels() * matImageArecuperer.cols()
            * matImageArecuperer.rows()];
    matImageArecuperer.get(0, 0, byteImageArecuperer);
    ///System.out.println(nomFichier +  " :: byteImageArecuperer en cours : " + Arrays.toString(byteImageArecuperer));

    BufferedImage imageArecuperer = new BufferedImage(matImageArecuperer.cols(), matImageArecuperer.rows(),
            BufferedImage.TYPE_BYTE_BINARY);
    imageArecuperer.getRaster().setDataElements(0, 0, matImageArecuperer.cols(), matImageArecuperer.rows(),
            byteImageArecuperer);

    n = nomFichier + "ImageSansBruitEnHSVaRecuperer" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageArecuperer, n, dossierDestinationImage);

    System.out.printf("%s",
            "Conversion de la matrice openCV d'image en BufferedImage (java) effectue avec succs!!!");

    //Matrices des oprateurs erode et dilate
    Mat matPortionImageErode = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(7, 7));
    Mat matPortionImageDilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10, 10));

    Imgproc.erode(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageErode);
    Imgproc.erode(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageErode);

    Imgproc.dilate(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageDilate);
    Imgproc.dilate(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageDilate);

    //criture des donnes de l'image  reccuprer "matImageArecuperer" dans un BufferedImage
    byte[] byteImageArecupOpMorph = new byte[matFinaleOperateurMorphologiq.channels()
            * matFinaleOperateurMorphologiq.cols() * matFinaleOperateurMorphologiq.rows()];
    matFinaleOperateurMorphologiq.get(0, 0, byteImageArecupOpMorph);
    ///System.out.println(nomFichier + " :: byteImageArecupOpMorph en cours : " + Arrays.toString(byteImageArecupOpMorph));

    BufferedImage imageArecupOpMorph = new BufferedImage(matFinaleOperateurMorphologiq.cols(),
            matFinaleOperateurMorphologiq.rows(), BufferedImage.TYPE_BYTE_BINARY);
    imageArecupOpMorph.getRaster().setDataElements(0, 0, matFinaleOperateurMorphologiq.cols(),
            matFinaleOperateurMorphologiq.rows(), byteImageArecupOpMorph);

    n = nomFichier + "ImageSansBruitEnHSVaRecupOpMorphologiq" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageArecupOpMorph, n, dossierDestinationImage);

    //Dterminer les contours des objets
    List<MatOfPoint> contoursObjets = new ArrayList<>();
    Mat hierarchieObjet = new Mat();

    /*Il me faut :
    - hierarchieObjet pour toutes images du dossier tisirImages
    - hierarchieObjet pour l'image capture
    - contoursObjets pour chaque hierarchieObjet des images du dossier tisirImages
    - contoursObjets pour hierarchieObjet de l'image capture
    */

    //trouver les contours
    Imgproc.findContours(matFinaleOperateurMorphologiq, contoursObjets, hierarchieObjet, Imgproc.RETR_CCOMP,
            Imgproc.CHAIN_APPROX_SIMPLE);

    //S'il y a des contours 
    if (hierarchieObjet.size().height > 0 && hierarchieObjet.size().width > 0) {

        listHierarchies.put(nomFichier + "MatriceHierarchie", hierarchieObjet);

        for (int i = 0; i >= 0; i = (int) hierarchieObjet.get(0, i)[0]) {
            //Conversion des MatOfPoints de "contoursObjets" en Lis<Point>
            List<Point> listPointsContoursObjets = new ArrayList<>();
            for (int j = 0; j < contoursObjets.size(); j++) {
                //Conversion des MatOfPoints de "contoursObjets" en cours en Lis<Point>
                List<Point> listPointsContoursObjetsEncours = new ArrayList<>();
                listPointsContoursObjetsEncours.addAll(contoursObjets.get(j).toList());
                //Coversion de la liste points du contour listPointsContoursObjetsEncours en Matrice
                Mat matPointContoursObjetsEncours = Converters
                        .vector_Point_to_Mat(listPointsContoursObjetsEncours);
                ///Calcul de la superficie du contours en cours
                double superficieContoursObjetEncours = Imgproc.contourArea(matPointContoursObjetsEncours);
                System.out.println(nomFichier + "::-:: matPointContoursObjets de contoursObjets  " + j
                        + " \n\t\t Taille de la matrice : " + matPointContoursObjetsEncours.size().width + " X "
                        + matPointContoursObjetsEncours.size().height
                        + " \n\t\t:: Surperficie de contoursObjets  "
                        + Math.round(superficieContoursObjetEncours));
                System.out.println();

                //Si la superficie du contours est assez grande  SUPERFICIEMINIMALE_CONTOURS, alors on l'ajoute dans la grande liste
                //On limine systmatiquement les petits contours
                if (superficieContoursObjetEncours >= SUPERFICIEMINIMALE_CONTOURS) {
                    listPointsContoursObjets.addAll(contoursObjets.get(j).toList());
                }
            }

            System.out.println(nomFichier + ":: listPointsContoursObjets :: liste des points P du contours : "
                    + listPointsContoursObjets.toString());
            System.out.println();

            //Coversion de la liste points du contour listPointsContoursObjets en Matrice
            Mat matPointContoursObjets = Converters.vector_Point_to_Mat(listPointsContoursObjets);
            ///Calcul de la superficie du contours
            double superficieContoursObjet = Imgproc.contourArea(matPointContoursObjets);
            System.out.println(nomFichier + " :: matPointContoursObjets de contoursObjets  " + i
                    + " \n\t\t Taille de la matrice : " + matPointContoursObjets.size().width + " X "
                    + matPointContoursObjets.size().height + " \n\t\t:: Surperficie de contoursObjets  "
                    + Math.round(superficieContoursObjet));
            System.out.println("------------------------------------------------");

            /// old ::: listContours.put(nomFichier+"MatriceHierarchie_ContoursObjets" + String.valueOf(i), contoursObjets);
            listContours.put(nomFichier + "MatriceHierarchie_ContoursObjets" + String.valueOf(i),
                    matPointContoursObjets);
            Imgproc.drawContours(matriceImage, contoursObjets, i, new Scalar(255, 255, 255), 3);

            System.out.println("--RSUM CONTOURS ET HIERARCHIE CONTOURS----");
            System.out.println();
            System.out.println(nomFichier + " \n\t\t :: Taille de listHierarchies " + listHierarchies.size()
                    + " \n\t\t :: Taille de  listContours : " + listContours.size());
            System.out.println();
            System.out.println("===============================");
            System.out.println("===============================");
        }
    }

    //criture des donnes de l'image  reccuprer "matriceImage" dans un BufferedImage
    byteImage = new byte[matriceImage.channels() * matriceImage.cols() * matriceImage.rows()];
    matriceImage.get(0, 0, byteImage);
    ///System.out.println(nomFichier + " :: byteImage en cours : " + Arrays.toString(byteImage));

    //criture des donnes de l'image encours "matriceImage" dans un BufferedImage
    imageEncours = new BufferedImage(matriceImage.cols(), matriceImage.rows(), elementBufferedImage);
    imageEncours.getRaster().setDataElements(0, 0, matriceImage.cols(), matriceImage.rows(), byteImage);

    n = nomFichier + "ImageSansBruitEnHSVobjetDetecte" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageEncours, n, dossierDestinationImage);
}

From source file:tisir.forms.ImageObjetForm.java

public void comparaisonContours() {
    Set<String> clesContoursObjetsImageCapturee = listContoursObjetsImageCapturee.keySet();

    if (clesContoursObjetsImageCapturee.size() > 0) {
        System.out.println();/*w ww . j a v  a2s.  c om*/
        System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
        double similariteMin = (double) 200;

        for (String cleContourImgCap : clesContoursObjetsImageCapturee) {
            System.out.println("\t -------------------------------------------");
            //System.out.println("cleContourImgCap : " + cleContourImgCap );

            //double similariteMin = (double)200;

            Mat matriceContoursObjetsImageCapturee = listContoursObjetsImageCapturee.get(cleContourImgCap);

            if (matriceContoursObjetsImageCapturee.size().width > 0
                    && matriceContoursObjetsImageCapturee.size().height > 0) {
                /*System.out.println("\t Taille de la matrice : " + matriceContoursObjetsImageCapturee.size().width +" X " + matriceContoursObjetsImageCapturee.size().height);
                System.out.println("\t Aire du contours : " + Imgproc.contourArea(matriceContoursObjetsImageCapturee));
                System.out.println();*/

                Set<String> clesContoursObjetsDossierTisirImage = listContoursObjetsDossierTisirImage.keySet();
                if (clesContoursObjetsDossierTisirImage.size() > 0) {
                    for (String cleContourImgDosTisir : clesContoursObjetsDossierTisirImage) {

                        System.out.println("cleContourImgCap : " + cleContourImgCap);
                        System.out.println(
                                "\t Taille de la matrice : " + matriceContoursObjetsImageCapturee.size().width
                                        + " X " + matriceContoursObjetsImageCapturee.size().height);
                        System.out.println("\t Aire du contours : "
                                + Imgproc.contourArea(matriceContoursObjetsImageCapturee));
                        System.out.println("---");

                        System.out.println("cleContourImgDosTisir : " + cleContourImgDosTisir);

                        Mat matriceContoursObjetsDossierTisirImage = listContoursObjetsDossierTisirImage
                                .get(cleContourImgDosTisir);

                        if (matriceContoursObjetsDossierTisirImage.size().width > 0
                                && matriceContoursObjetsDossierTisirImage.size().height > 0) {
                            System.out.println("\t Taille de la matrice : "
                                    + matriceContoursObjetsImageCapturee.size().width + " X "
                                    + matriceContoursObjetsImageCapturee.size().height);
                            System.out.println("\t Aire du contours : "
                                    + Imgproc.contourArea(matriceContoursObjetsDossierTisirImage));

                            //On cherche la similarit entre contoursObjetsImageCapturee et contoursObjetsDossierTisirImage
                            double similariteDe2Matrices = Imgproc.matchShapes(
                                    matriceContoursObjetsImageCapturee, matriceContoursObjetsDossierTisirImage,
                                    Imgproc.CV_CONTOURS_MATCH_I3, 0);
                            if (similariteMin > similariteDe2Matrices) {
                                similariteMin = similariteDe2Matrices;
                            }

                            System.out.println("\t Similarit des matrices : " + cleContourImgCap + " et "
                                    + cleContourImgCap + " : \n\t" + similariteDe2Matrices);
                            System.out.println("\t Similarit minimale : " + similariteMin);
                            System.out.println("\t ----------------");
                            System.out.println();
                        }

                    }
                }
            }

        }

        if (similariteMin <= 0.1) {
            resultat = "L'objet sur l'image capture est <br /> <em>RECYCLABLE</em> <br />";
        } else {
            resultat = "L'objet sur l'image capture est <br /> <em>NON RECYCLABLE</em> <br />";
        }
    }
}

From source file:tisir.forms.ImageObjetForm.java

public void traitementImages(String nomImage, String nomFichier, String dossierDestinationImage,
        Map<String, Mat> listHierarchies, Map<String, Mat> listContours) {
    //System.out.println("Matrice de l'image :" + Imgcodecs.imread(nomImage.toString()).dump());
    System.out.println("chemin d'accs  l'image : " + nomImage);
    Mat matriceImage = Imgcodecs.imread(nomImage); //Chargement de l'image dans une matrice carre
    Mat matImageArecuperer1 = new Mat();
    Mat matImageArecuperer2 = new Mat();
    Mat matImageArecuperer = new Mat();
    Mat matFinaleOperateurMorphologiq = new Mat();

    //Initialisation du bean reprsentant la donne d'une image d'objet
    ImageObjetBean imageobjet = new ImageObjetBean();

    System.out.printf("%s", "Conversion de la matrice openCV d'image en BufferedImage (java) en cours ...");

    System.out.printf("MatriceImage.channels () : %s\n", matriceImage.channels());

    int elementBufferedImage = BufferedImage.TYPE_BYTE_GRAY;
    if (matriceImage.channels() > 1) {
        Mat matImageSansBruit = new Mat();
        Mat matImageSansBruitEnHSV = new Mat();

        //Suppression de bruit dans l'image encours
        Imgproc.bilateralFilter(matriceImage, matImageSansBruit, 5, 175, 175);
        ///Imgproc.blur(matriceImage, matImageSansBruit, new Size(15,15));

        //Conversion en HSV
        Imgproc.cvtColor(matImageSansBruit, matImageSansBruitEnHSV, Imgproc.COLOR_BGR2HSV);
        elementBufferedImage = BufferedImage.TYPE_3BYTE_BGR;
        matriceImage = matImageSansBruitEnHSV; //Cette matrice est ncessaire pour la dtection
    }//from w  ww  .  j  av a  2  s.  co  m

    //Rcupration des seuils min et max de H, S et V avant les couleurs vert
    Scalar valHSVmin = new Scalar(VALEURDEBUTHUE, VALEURDEBUTSATURATION, VALEURDEBUTVALUE);
    Scalar valHSVmax = new Scalar(VALEURFINHUE, VALEURFINSATURATION, VALEURFINVALUE);

    //Rcupration des seuils min et max de H, S et V aprs les couleurs vert
    Scalar valHSVmin2 = new Scalar(VALEURDEBUTHUE2, VALEURDEBUTSATURATION, VALEURDEBUTVALUE);
    Scalar valHSVmax2 = new Scalar(VALEURFINHUE2, VALEURFINSATURATION, VALEURFINVALUE);

    System.out.printf("Intervalle de valeurs fix de HUE avant les couleurs  dominance vert : %s%s%s",
            String.valueOf(valHSVmin.val[0]), " - ", String.valueOf(valHSVmax.val[0]));
    System.out.printf("Intervalle de valeurs fix de HUE aprs les couleurs  dominance vert : %s%s%s",
            String.valueOf(valHSVmin2.val[0]), " - ", String.valueOf(valHSVmax2.val[0]));
    System.out.printf("Intervalle de valeurs fix de SATURATION : %s%s%s", String.valueOf(valHSVmin.val[1]),
            " - ", String.valueOf(valHSVmax.val[1]));
    System.out.printf("Intervalle de valeurs fix de HUE : %s%s%s", String.valueOf(valHSVmin.val[2]), " - ",
            String.valueOf(valHSVmax.val[2]));

    //////////Filtre pour laisser passer uniquement les couleurs ne contenant pas vert
    Core.inRange(matriceImage, valHSVmin, valHSVmax, matImageArecuperer1);
    Core.inRange(matriceImage, valHSVmin2, valHSVmax2, matImageArecuperer2);

    //On associe les lments de "matImageArecuperer1"  ceux de "matImageArecuperer2"
    Core.add(matImageArecuperer1, matImageArecuperer2, matImageArecuperer);

    //Affichage  l'cran de donnes binaires de l'image en cours
    byte[] byteImage = new byte[matriceImage.channels() * matriceImage.cols() * matriceImage.rows()];
    matriceImage.get(0, 0, byteImage);
    ///System.out.println(nomFichier + " :: byteImage en cours : " + Arrays.toString(byteImage));

    //criture des donnes de l'image encours "matriceImage" dans un BufferedImage
    BufferedImage imageEncours = new BufferedImage(matriceImage.cols(), matriceImage.rows(),
            elementBufferedImage);
    imageEncours.getRaster().setDataElements(0, 0, matriceImage.cols(), matriceImage.rows(), byteImage);

    //criture de l'image sur disque
    long id = System.currentTimeMillis();
    String n = nomFichier;
    n = n + "ImageSansBruitEnHSV" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageEncours, n, dossierDestinationImage);

    //criture des donnes de l'image  reccuprer "matImageArecuperer" dans un BufferedImage
    byte[] byteImageArecuperer = new byte[matImageArecuperer.channels() * matImageArecuperer.cols()
            * matImageArecuperer.rows()];
    matImageArecuperer.get(0, 0, byteImageArecuperer);
    ///System.out.println(nomFichier +  " :: byteImageArecuperer en cours : " + Arrays.toString(byteImageArecuperer));

    BufferedImage imageArecuperer = new BufferedImage(matImageArecuperer.cols(), matImageArecuperer.rows(),
            BufferedImage.TYPE_BYTE_BINARY);
    imageArecuperer.getRaster().setDataElements(0, 0, matImageArecuperer.cols(), matImageArecuperer.rows(),
            byteImageArecuperer);

    n = nomFichier + "ImageSansBruitEnHSVaRecuperer" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageArecuperer, n, dossierDestinationImage);

    System.out.printf("%s",
            "Conversion de la matrice openCV d'image en BufferedImage (java) effectue avec succs!!!");

    //Matrices des oprateurs erode et dilate
    Mat matPortionImageErode = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(7, 7));
    Mat matPortionImageDilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(10, 10));

    Imgproc.erode(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageErode);
    Imgproc.erode(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageErode);

    Imgproc.dilate(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageDilate);
    Imgproc.dilate(matImageArecuperer, matFinaleOperateurMorphologiq, matPortionImageDilate);

    //criture des donnes de l'image  reccuprer "matImageArecuperer" dans un BufferedImage
    byte[] byteImageArecupOpMorph = new byte[matFinaleOperateurMorphologiq.channels()
            * matFinaleOperateurMorphologiq.cols() * matFinaleOperateurMorphologiq.rows()];
    matFinaleOperateurMorphologiq.get(0, 0, byteImageArecupOpMorph);
    ///System.out.println(nomFichier + " :: byteImageArecupOpMorph en cours : " + Arrays.toString(byteImageArecupOpMorph));

    BufferedImage imageArecupOpMorph = new BufferedImage(matFinaleOperateurMorphologiq.cols(),
            matFinaleOperateurMorphologiq.rows(), BufferedImage.TYPE_BYTE_BINARY);
    imageArecupOpMorph.getRaster().setDataElements(0, 0, matFinaleOperateurMorphologiq.cols(),
            matFinaleOperateurMorphologiq.rows(), byteImageArecupOpMorph);

    n = nomFichier + "ImageSansBruitEnHSVaRecupOpMorphologiq" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageArecupOpMorph, n, dossierDestinationImage);

    //Affectation de la valeur de proprit NomImage du bean 
    imageobjet.setNomImage(nomFichier);
    //Affectation de la valeur de proprit NomImage du bean 
    imageobjet.setDonneeImage(Arrays.toString(byteImageArecupOpMorph));
    //Affectation de la valeur de proprit MatriceDonneeImage du bean 
    imageobjet.setMatriceDonneeImage(matFinaleOperateurMorphologiq);
    //Affectation de la valeur de proprit LargeurImage du bean 
    imageobjet.setLargeurImage((int) Math.round(matFinaleOperateurMorphologiq.size().width));
    //Affectation de la valeur de proprit HauteurImage du bean 
    imageobjet.setHauteurImage((int) Math.round(matFinaleOperateurMorphologiq.size().height));

    //Dterminer les contours des objets
    List<MatOfPoint> contoursObjets = new ArrayList<>();
    Mat hierarchieObjet = new Mat();

    //trouver les contours
    Imgproc.findContours(matFinaleOperateurMorphologiq, contoursObjets, hierarchieObjet, Imgproc.RETR_CCOMP,
            Imgproc.CHAIN_APPROX_SIMPLE);

    //S'il y a des contours 
    if (hierarchieObjet.size().height > 0 && hierarchieObjet.size().width > 0) {

        listHierarchies.put(nomFichier + "MatriceHierarchie", hierarchieObjet);

        //criture des donnes de l'hirarchie des contours d'image "hierarchieObjet" dans un BufferedImage
        byte[] byteHierarchieObjet = new byte[hierarchieObjet.channels() * hierarchieObjet.cols()
                * hierarchieObjet.rows()];
        //hierarchieObjet.get(0, 0, byteHierarchieObjet);

        //Affectation de la valeur de proprit donneeHierarchieDonneeImage du bean 
        imageobjet.setDonneeHierarchieDonneeImage(Arrays.toString(byteHierarchieObjet));
        //Affectation de la valeur de proprit MatriceHierarchieDonneeImage du bean 
        imageobjet.setMatriceHierarchieDonneeImage(hierarchieObjet);
        //Affectation de la valeur de proprit LargeurImageH du bean 
        imageobjet.setLargeurImageH((int) Math.round(hierarchieObjet.size().width));
        //Affectation de la valeur de proprit HauteurImageH du bean 
        imageobjet.setHauteurImageH((int) Math.round(hierarchieObjet.size().height));

        //criture des donnes de l'hirarchie des contours d'image "hierarchieObjet" sur disaue
        BufferedImage imageArecupHierarchieObjet = new BufferedImage(hierarchieObjet.cols(),
                hierarchieObjet.rows(), BufferedImage.TYPE_BYTE_BINARY);
        imageArecupHierarchieObjet.getRaster().setDataElements(0, 0, hierarchieObjet.cols(),
                hierarchieObjet.rows(), byteHierarchieObjet);

        n = nomFichier + "ImageSansBruitEnHSVHierarchieContours" + id + ".png";
        ecritureDonneesImagesOpenCVdansUnFichierPNG(imageArecupHierarchieObjet, n, dossierDestinationImage);

        for (int i = 0; i >= 0; i = (int) hierarchieObjet.get(0, i)[0]) {
            //Conversion des MatOfPoints de "contoursObjets" en Lis<Point>
            List<Point> listPointsContoursObjets = new ArrayList<>();
            for (int j = 0; j < contoursObjets.size(); j++) {
                //Conversion des MatOfPoints de "contoursObjets" en cours en Lis<Point>
                List<Point> listPointsContoursObjetsEncours = new ArrayList<>();
                listPointsContoursObjetsEncours.addAll(contoursObjets.get(j).toList());
                //Coversion de la liste points du contour listPointsContoursObjetsEncours en Matrice
                Mat matPointContoursObjetsEncours = Converters
                        .vector_Point_to_Mat(listPointsContoursObjetsEncours);
                ///Calcul de la superficie du contours en cours
                double superficieContoursObjetEncours = Imgproc.contourArea(matPointContoursObjetsEncours);
                System.out.println(nomFichier + "::-:: matPointContoursObjets de contoursObjets  " + j
                        + " \n\t\t Taille de la matrice : " + matPointContoursObjetsEncours.size().width + " X "
                        + matPointContoursObjetsEncours.size().height
                        + " \n\t\t:: Surperficie de contoursObjets  "
                        + Math.round(superficieContoursObjetEncours));
                System.out.println();

                //Si la superficie du contours est assez grande  SUPERFICIEMINIMALE_CONTOURS, alors on l'ajoute dans la grande liste
                //On limine systmatiquement les petits contours
                if (superficieContoursObjetEncours >= SUPERFICIEMINIMALE_CONTOURS) {
                    listPointsContoursObjets.addAll(contoursObjets.get(j).toList());
                }
            }

            System.out.println(nomFichier + ":: listPointsContoursObjets :: liste des points P du contours : "
                    + listPointsContoursObjets.toString());
            System.out.println();

            //Coversion de la liste points du contour listPointsContoursObjets en Matrice
            Mat matPointContoursObjets = Converters.vector_Point_to_Mat(listPointsContoursObjets);
            ///Calcul de la superficie du contours
            double superficieContoursObjet = Imgproc.contourArea(matPointContoursObjets);
            System.out.println(nomFichier + " :: matPointContoursObjets de contoursObjets  " + i
                    + " \n\t\t Taille de la matrice : " + matPointContoursObjets.size().width + " X "
                    + matPointContoursObjets.size().height + " \n\t\t:: Surperficie de contoursObjets  "
                    + Math.round(superficieContoursObjet));
            System.out.println("------------------------------------------------");

            listContours.put(nomFichier + "MatriceHierarchie_ContoursObjets" + String.valueOf(i),
                    matPointContoursObjets);

            //Traage des contours
            Imgproc.drawContours(matriceImage, contoursObjets, i, new Scalar(255, 255, 255), 3);

            System.out.println("--RSUM CONTOURS ET HIERARCHIE CONTOURS----");
            System.out.println();
            System.out.println(nomFichier + " \n\t\t :: Taille de listHierarchies " + listHierarchies.size()
                    + " \n\t\t :: Taille de  listContours : " + listContours.size());
            System.out.println();
            System.out.println("===============================");
            System.out.println("===============================");
        }
    }

    //criture des donnes de l'image  reccuprer "matriceImage" dans un BufferedImage
    byteImage = new byte[matriceImage.channels() * matriceImage.cols() * matriceImage.rows()];
    matriceImage.get(0, 0, byteImage);
    ///System.out.println(nomFichier + " :: byteImage en cours : " + Arrays.toString(byteImage));

    //criture des donnes de l'image encours "matriceImage" dans un BufferedImage
    imageEncours = new BufferedImage(matriceImage.cols(), matriceImage.rows(), elementBufferedImage);
    imageEncours.getRaster().setDataElements(0, 0, matriceImage.cols(), matriceImage.rows(), byteImage);

    n = nomFichier + "ImageSansBruitEnHSVobjetDetecte" + id + ".png";
    ecritureDonneesImagesOpenCVdansUnFichierPNG(imageEncours, n, dossierDestinationImage);

    //Ajout du bean dans la liste des bean
    listImagesObjetsTousLesDossiersTisirImage.put(nomFichier, imageobjet);

}

From source file:uk.ac.horizon.artcodes.process.OtsuThresholder.java

License:Open Source License

@Override
public void process(ImageBuffers buffers) {
    Mat image = buffers.getImageInGrey();
    Imgproc.GaussianBlur(image, image, new Size(5, 5), 0);

    if (display == Display.greyscale) {
        Imgproc.cvtColor(image, buffers.getOverlay(false), Imgproc.COLOR_GRAY2BGRA);
    }//from  ww w .ja v a  2  s .  c  o  m

    tiles = 1;
    final int tileHeight = (int) image.size().height / tiles;
    final int tileWidth = (int) image.size().width / tiles;

    // Split image into tiles and apply process on each image tile separately.
    for (int tileRow = 0; tileRow < tiles; tileRow++) {
        final int startRow = tileRow * tileHeight;
        int endRow;
        if (tileRow < tiles - 1) {
            endRow = (tileRow + 1) * tileHeight;
        } else {
            endRow = (int) image.size().height;
        }

        for (int tileCol = 0; tileCol < tiles; tileCol++) {
            final int startCol = tileCol * tileWidth;
            int endCol;
            if (tileCol < tiles - 1) {
                endCol = (tileCol + 1) * tileWidth;
            } else {
                endCol = (int) image.size().width;
            }

            final Mat tileMat = image.submat(startRow, endRow, startCol, endCol);
            Imgproc.threshold(tileMat, tileMat, 127, 255, Imgproc.THRESH_OTSU);
            tileMat.release();
        }
    }

    if (display == Display.threshold) {
        Imgproc.cvtColor(image, buffers.getOverlay(false), Imgproc.COLOR_GRAY2BGRA);
    }

    buffers.setImage(image);
}

From source file:uk.ac.horizon.artcodes.process.TileThresholder.java

License:Open Source License

@Override
public void process(ImageBuffers buffers) {
    Mat image = buffers.getImageInGrey();
    Imgproc.GaussianBlur(image, image, new Size(5, 5), 0);

    if (display == Display.greyscale) {
        Imgproc.cvtColor(image, buffers.getOverlay(false), Imgproc.COLOR_GRAY2BGRA);
    }/*w  w  w .ja  va 2s .  com*/

    if (!buffers.hasDetected()) {
        tiles = (tiles % 9) + 1;
    }
    final int tileHeight = (int) image.size().height / tiles;
    final int tileWidth = (int) image.size().width / tiles;

    // Split image into tiles and apply process on each image tile separately.
    for (int tileRow = 0; tileRow < tiles; tileRow++) {
        final int startRow = tileRow * tileHeight;
        int endRow;
        if (tileRow < tiles - 1) {
            endRow = (tileRow + 1) * tileHeight;
        } else {
            endRow = (int) image.size().height;
        }

        for (int tileCol = 0; tileCol < tiles; tileCol++) {
            final int startCol = tileCol * tileWidth;
            int endCol;
            if (tileCol < tiles - 1) {
                endCol = (tileCol + 1) * tileWidth;
            } else {
                endCol = (int) image.size().width;
            }

            final Mat tileMat = image.submat(startRow, endRow, startCol, endCol);
            Imgproc.threshold(tileMat, tileMat, 127, 255, Imgproc.THRESH_OTSU);
            tileMat.release();
        }
    }

    if (display == Display.threshold) {
        Imgproc.cvtColor(image, buffers.getOverlay(false), Imgproc.COLOR_GRAY2BGRA);
    }

    buffers.setImage(image);
}

From source file:xored.vpn.fixer.TokenDetector.java

private Mat threshold(Mat image, int blockSize, double c) {
    Mat imageHSV = new Mat(image.size(), Core.DEPTH_MASK_8U);
    Mat imageBlurr = new Mat(image.size(), Core.DEPTH_MASK_8U);
    Mat imageA = new Mat(image.size(), Core.DEPTH_MASK_ALL);
    Imgproc.cvtColor(image, imageHSV, Imgproc.COLOR_BGR2GRAY);
    Imgproc.GaussianBlur(imageHSV, imageBlurr, new Size(11, 11), 0);
    Imgproc.adaptiveThreshold(imageBlurr, imageA, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C,
            Imgproc.THRESH_BINARY, blockSize, c);
    return imageA;
}