bonjour, je cherche à remplir un BufferedImage ( en java ) par un tableau de pixel (2d) donné et convertir le BufferedImage sur un fichier par exemple (image.jpg), s'il y a quelqu'un qui peut m'aider, merci d'avance.
bonjour, je cherche à remplir un BufferedImage ( en java ) par un tableau de pixel (2d) donné et convertir le BufferedImage sur un fichier par exemple (image.jpg), s'il y a quelqu'un qui peut m'aider, merci d'avance.
Tout dépend de ce qu'il y a dans ton tableau 2D (int, Color, autre).
D'une manière générale, un BufferedImage RGB utilise un Raster qui est composé d'un buffer linéaire d'entiers (un tableau 1D de int au format rgb). Il faut donc convertir ton tableau 2D et tableau 1D d'entiers:
Je vais supposer un tableau 2D d'objets "java.awt.Color":
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static BufferedImage ColorArrayToBufferedImage(Color[][] data, int w,int h) { BufferedImage bimg = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); int[] linearbuffer = new int[w*h]; int i=0; for(int y=0;y<h;y++) for(int x=0;x<w;x++) linearbuffer[i++]=data[x][y].getRGB(); bimg.getRaster().setDataElements(0, 0, w, h, linearbuffer); return bimg; }
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
merci, mais c'est pas exactement ce que je cherche, pour bien comprendre ma questionne :
HarrisFast hs=new HarrisFast(tab,im.getWidth(),im.getHeight());
tab2=hs.filter(3, 1.2, 32, 8);
je pense que vous avez compris (L'histoire des points d'interêt ), le probleme c'est comment rendre le tab2 dans un buffer pour qu'ensuite je peux l'afficher ou enregistrer dans un fichier jpeg
Ah. Dans ce cas le tableau 2D contient des niveaux de gris. Donc une modification s'impose:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static BufferedImage GrayLevelArrayToBufferedImage(int[][] data, int w,int h) { BufferedImage bimg = new BufferedImage(w,h,BufferedImage.TYPE_BYTE_GRAY); byte[] linearbuffer = new byte[w*h]; int i=0; for(int y=0;y<h;y++) for(int x=0;x<w;x++) linearbuffer[i++]=(byte)data[x][y]; bimg.getRaster().setDataElements(0, 0, w, h, linearbuffer); return bimg; }
Sinon, pour tester le filtre HarrisFast, tu peux télécharger le programme de Millie.![]()
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Merci Beaucoup pseudocode
C'est ce que je cherche.
Je l'ai testé sur une image, il est trés efficace.
Il me reste une chose, comment connaitre la position des points d'interêt finals parceque j'en ai besoin pour faire ensuite une comparaison avec d'autres images
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Partager