Example usage for org.opencv.core Mat get

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

Introduction

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

Prototype

public int get(int row, int col, double[] data) 

Source Link

Usage

From source file:syncleus.dann.data.video.TLDUtil.java

License:Apache License

public static float[] getFloatArray(final Mat mat) {
    if (CvType.CV_32FC1 != mat.type())
        throw new IllegalArgumentException(
                "Expected type is CV_32FC1, we found: " + CvType.typeToString(mat.type()));

    final int size = (int) (mat.total() * mat.channels());
    if (_floatBuff.length != size) {
        _floatBuff = new float[size];
    }//  w w  w  . j  ava2 s  .  c om
    mat.get(0, 0, _floatBuff); // 0 for row and col means the WHOLE Matrix
    return _floatBuff;
}

From source file:syncleus.dann.data.video.TLDUtil.java

License:Apache License

public static double[] getDoubleArray(final Mat mat) {
    if (CvType.CV_64F != mat.type())
        throw new IllegalArgumentException(
                "Expected type is CV_64F, we found: " + CvType.typeToString(mat.type()));

    final int size = (int) (mat.total() * mat.channels());
    if (_doubleBuff.length != size) {
        _doubleBuff = new double[size];
    }//from  w  w w. j  av a  2 s.c  o m
    mat.get(0, 0, _doubleBuff); // 0 for row and col means the WHOLE Matrix
    return _doubleBuff;
}

From source file:syncleus.dann.data.video.TLDUtil.java

License:Apache License

public static int getInt(final int row, final int col, final Mat mat) {
    if (CvType.CV_32SC1 != mat.type())
        throw new IllegalArgumentException(
                "Expected type is CV_32SC1, we found: " + CvType.typeToString(mat.type()));

    mat.get(row, col, _intBuff1);
    return _intBuff1[0];
}

From source file:syncleus.dann.data.video.TLDUtil.java

License:Apache License

public static float getFloat(final int row, final int col, final Mat mat) {
    if (CvType.CV_32F != mat.type())
        throw new IllegalArgumentException(
                "Expected type is CV_32F, we found: " + CvType.typeToString(mat.type()));

    mat.get(row, col, _floatBuff1);
    return _floatBuff1[0];
}

From source file:syncleus.dann.data.video.TLDUtil.java

License:Apache License

public static double getDouble(final int row, final int col, final Mat mat) {
    if (CvType.CV_64F != mat.type())
        throw new IllegalArgumentException(
                "Expected type is CV_64F, we found: " + CvType.typeToString(mat.type()));

    mat.get(row, col, _doubleBuff1);
    return _doubleBuff1[0];
}

From source file:TarHadoop.TarToSeqFile.java

License:Apache License

/** Performs the conversion. */
public void execute(String inputFolder) throws Exception {
    SequenceFile.Writer output = null;
    try {//from   w  w  w .  j  av  a  2 s  .  c o m
        output = openOutputFile();
        DirectoryStructure obj = new DirectoryStructure();
        List<String> listOfImgPath = obj.getAllImgPaths(inputFolder);
        int i = 0;
        //String prevName="";
        //String value="";
        Text key = new Text();
        for (Iterator<String> iterator = listOfImgPath.iterator(); iterator.hasNext();) {
            String imgPath = (String) iterator.next();

            Mat img1 = Highgui.imread(imgPath);

            String[] tokens = imgPath.split("/");
            String currName = tokens[tokens.length - 2];
            System.out.println(i + " of imgPath = " + currName + "   " + listOfImgPath.size());

            byte[] data = new byte[(int) img1.total() * (int) img1.elemSize()];
            img1.get(0, 0, data);

            key = new Text(currName + "," + img1.rows() + "," + img1.cols());
            BytesWritable value = new BytesWritable(data);
            output.append(key, value);

            /*if(i==0)
               prevName=currName;
            if(currName.compareTo(prevName)==0){
               byte[] data=new byte[(int)img1.total()*(int)img1.elemSize()];
               img1.get(0,0,data);
               String x=new String(data,"UTF-8");
               value+=x+"###";
            }
            else{
               key=new Text(imgPath+","+img1.rows()+","+img1.cols());
               hadoopvalue=new Text(value);
               output.append(key, hadoopvalue);
               prevName=currName;
               value="";
            }*/
            ++i;
        }
    } finally {
        //if (input != null) { input.close(); }
        if (output != null) {
            output.close();
        }
    }
}

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  ww.j a v a  2  s .  com

    //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 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
    }//  ww w . j a v a 2  s . c  om

    //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:tk.year.opencv.demo.ui.ImageProvider.java

License:Open Source License

@Override
public Image get() {

    final Mat src = matProvider.get();
    final Mat dst = new Mat();
    Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2BGR);

    byte[] bytes = new byte[dst.cols() * dst.rows() * (int) dst.elemSize()];
    dst.get(0, 0, bytes);

    final BufferedImage out = new BufferedImage(dst.cols(), dst.rows(), BufferedImage.TYPE_3BYTE_BGR);
    out.getRaster().setDataElements(0, 0, dst.cols(), dst.rows(), bytes);

    return out;//from ww w .  ja  v a 2s .  c om
}

From source file:topcodes.Scanner.java

License:Open Source License

/**
* Scan the image and return a list of all topcodes found in it
*//* ww w.j a va  2s .co m*/
public List<TopCode> scan(Mat mat) throws IOException {
    int width = mat.width(), height = mat.height(), channels = mat.channels();
    byte[] sourcePixels = new byte[width * height * channels];
    mat.get(0, 0, sourcePixels);

    // create new BufferedImage and
    image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);

    // Get reference to backing data
    final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    System.arraycopy(sourcePixels, 0, targetPixels, 0, sourcePixels.length);

    return scan(image);
}