List of usage examples for org.opencv.core Mat channels
public int channels()
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 ww w. ja v a 2 s . co m*/ mat.get(0, 0, _doubleBuff); // 0 for row and col means the WHOLE Matrix return _doubleBuff; }
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 }/*from w w w. ja va 2 s . c o 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 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 }/*w w w. ja va2 s .c o 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:topcodes.Scanner.java
License:Open Source License
/** * Scan the image and return a list of all topcodes found in it *//* w w w . j a v a 2 s.c o 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); }
From source file:uk.ac.horizon.artcodes.process.WhiteBalanceImageProcessor.java
License:Open Source License
@Override public void process(ImageBuffers buffers) { Mat image = buffers.getImageInBgr(); if (this.histograms == null) { this.setup(); }//ww w.j a v a 2s.c om List<Mat> listOfMat = new ArrayList<>(); listOfMat.add(image); // create a histogram for each channel: // (oddly it seems ~10x faster to do 3 channels separately rather than all 3 in one calcHist call) for (int channel = 0; channel < image.channels(); ++channel) { Imgproc.calcHist(listOfMat, channels[channel], emptyMatMask, histograms[channel], size, range); } float[] a = new float[image.channels()]; float[] b = new float[image.channels()]; final int desiredHistogramBufferSize = histograms[0].rows() * histograms[0].cols() * histograms[0].channels(); float[] pixelHistogramBuffer = new float[desiredHistogramBufferSize]; // get the values to remap the histograms: for (int channel = 0; channel < image.channels(); ++channel) { histograms[channel].get(0, 0, pixelHistogramBuffer); getHistogramRemap(pixelHistogramBuffer, desiredHistogramBufferSize, image.total(), a, channel, b, channel); } // Use a Look Up Table to re-map values // (it's a lot faster to workout and save what the 256 possible values transform into // than to do the math image.cols*rows times) if (lut == null) { lut = new Mat(1, 256, CvType.CV_8UC3); } final int lutSize = lut.cols() * lut.rows() * lut.channels(); int lutIndex = -1; if (lutBufferArray == null || lutBufferArray.length != lutSize) { lutBufferArray = new byte[lutSize]; } for (int i = 0; i < 256; ++i) { for (int channel = 0; channel < image.channels(); ++channel) { lutBufferArray[++lutIndex] = (byte) Math.min(Math.max(a[channel] * ((i) - b[channel]), 0), 255); } } lut.put(0, 0, lutBufferArray); Core.LUT(image, lut, image); buffers.setImage(image); }
From source file:video.PictureView.java
public static BufferedImage mat2Img(Mat in) { BufferedImage out;//from www. j a v a2s .c o m int width = in.cols(); int height = in.height(); byte[] data = new byte[width * height * (int) in.elemSize()]; int type; in.get(0, 0, data); if (in.channels() == 1) { type = BufferedImage.TYPE_BYTE_GRAY; } else { type = BufferedImage.TYPE_3BYTE_BGR; } out = new BufferedImage(width, height, type); out.getRaster().setDataElements(0, 0, width, height, data); return out; }
From source file:videostream.MulticastServer.java
/** * Transforms an OpenCV mat to a byte array * @param m The mat to transform//from w ww . j a va 2 s . c o m * @param format The desired format * @return The mat transformed to a byte array * @throws IOException */ public byte[] matToByteArray(Mat m, String format) throws IOException { // Check if image is grayscale or color int type = BufferedImage.TYPE_BYTE_GRAY; if (m.channels() > 1) { type = BufferedImage.TYPE_3BYTE_BGR; } // Transfer bytes from Mat to BufferedImage int bufferSize = m.channels() * m.cols() * m.rows(); byte[] b = new byte[bufferSize]; m.get(0, 0, b); // get all the pixels BufferedImage image = new BufferedImage(m.cols(), m.rows(), type); final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); System.arraycopy(b, 0, targetPixels, 0, b.length); Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); ImageWriter writer = (ImageWriter) iter.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); ByteArrayOutputStream baos1 = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(baos1); writer.setOutput(ios); IIOImage Iimage = new IIOImage(image, null, null); writer.write(null, Iimage, iwp); writer.dispose(); return baos1.toByteArray(); }
From source file:videostream.MyFrame.java
public Image toBufferedImage(Mat m) { // Code from http://stackoverflow.com/questions/15670933/opencv-java-load-image-to-gui // Check if image is grayscale or color int type = BufferedImage.TYPE_BYTE_GRAY; if (m.channels() > 1) { type = BufferedImage.TYPE_3BYTE_BGR; }/*from w ww. j a v a 2s . c o m*/ // Transfer bytes from Mat to BufferedImage int bufferSize = m.channels() * m.cols() * m.rows(); byte[] b = new byte[bufferSize]; m.get(0, 0, b); // get all the pixels BufferedImage image = new BufferedImage(m.cols(), m.rows(), type); final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); System.arraycopy(b, 0, targetPixels, 0, b.length); return image; }
From source file:webcamfacedetect.FaceDetect.java
/** * Converts/writes a Mat into a BufferedImage. * * @param matrix Mat of type CV_8UC3 or CV_8UC1 * @return BufferedImage of type TYPE_3BYTE_BGR or TYPE_BYTE_GRAY *//*www .j a v a 2 s .c o m*/ public boolean MatToBufferedImage(Mat matBGR) { long startTime = System.nanoTime(); int width = matBGR.width(), height = matBGR.height(), channels = matBGR.channels(); byte[] sourcePixels = new byte[width * height * channels]; matBGR.get(0, 0, sourcePixels); // create new image and get reference to backing data image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); System.arraycopy(sourcePixels, 0, targetPixels, 0, sourcePixels.length); long endTime = System.nanoTime(); //System.out.println(String.format("Elapsed time: %.2f ms", (float) (endTime - startTime) / 1000000)); return true; }