citation :
Ca me parle pas du tour :p
Mushussu te décris juste un moyen de repérer le fond de l'image, compte tenu du fait que les couleurs des objets ne sont, elles, pas parfaitement uniformes.
L'idée est de remplacer le fond par du blanc et le reste par du noir.
Hors ligne
Oui je dois passer par niveau de gris
Hors ligne
J'ai réussi à stocker les pixels avec ta fonction. Et à récupérer certaines images. Il ne me les récupères pas toutes.
J'ai le droit a un jolie message d'erreur de java
An OutOfMemoryError means that your code is either using up too much memory because of a bug (e.g. creating an array that's too large, or unintentionally loading thousands of images), or that your sketch may need more memory to run. If your sketch uses a lot of memory (for instance if it loads a lot of data files) you can increase the memory available to your sketch using the Preferences window.
Hors ligne
C'est une fuite en avant Olivier, c'est comme un bol de noix de cajou dans une réunion de la fête des 0 et des 1. Tu auras beau en rajouter il sera toujours vide.
C'est à la racine qu'il faut attaquer. Si tu cherches toutes les couleurs disponibles, il y en a beaucoup, trop pour la mémoire. Dans un post précédent j'en avais plus de 2000 donc si tu créé 2000 images il va râler le processeur.
Il faut distinguer ce qui est le fond et ce qui ne l'ai pas.
J'ai créé une méthode pour transformer les couleurs en noir et en blanc :
PImage detectionFond(PImage img) { PImage travail = img.get(); color fond = img.pixels[0]; // boolean test = true; for (int i = 0; i < img.width; i++) { if (img.pixels[i] != fond) { test = false; } } if (!test) { println("Pas de couleur de fond"); return null; } println(red(fond) + " " + green(fond) + " " + blue(fond)); // Elaboration de la copie de travail for (int i = 0; i < img.pixels.length; i++) { if (img.pixels[i] == fond) { travail.pixels[i] = color(255); } else { travail.pixels[i] = color(0); } } return travail; }
Ensuite tu peux appliquer la moulinette. Pour finir j'ai fait la méthode pour sauvegarder les images.
Attention, dans l'image des carrés noirs, rouges et bleus le fond n'est pas uniforme. Des micro-variations empêchaient de sortir un résultat. Donc j'ai lissé le fond.
Si tu as des questions, n'hésite pas.
Hors ligne
citation :
C'est une fuite en avant Olivier, c'est comme un bol de noix de cajou dans une réunion de la fête des 0 et des 1. Tu auras beau en rajouter il sera toujours vide.
True.
Tu m'accorderas tout de même qu'il existe une taille de bol théorique suffisamment grand pour contenir exactement le nombre de noix de cajous ingérables par les convives...
Hors ligne
Entres-tu dans les paramètres de cette équation ?
Mais une brillante démonstration a déjà été réalisée avec des cacahuètes. Je pense que les noix de cajou sont plus addictives que les cacahuètes :
https://books.google.fr/books?id=yKc-BA … mp;f=false
Dernière modification par Mushussu (2015-12-15 00:49:20)
Hors ligne
Bonjour les gars,
Après avoir bien fait râler le processeur en effet en supprimant les fond, ça passe mieux :p
Je n'ai regardé que ton code après... ça se rejoint xD Comment fais tu ton recadrage? Tu regardes la ou ce n'est pas blanc en fond et prends le minimum et le maximum?
Je dois réaliser un petit rapport xD
Le simple fait de supprimer le fond permet en fait de réduire la taille en mémoire. Mais si je lui donne une image en 4K (c'est juste un exemple), même en retirant le fond, la mémoire pourrait elle cracher?
Sinon à part ca je dois avouer que ton code fonctionne très bien xD
Je vais ajouter le fait de pouvoir choisir de soit garder les couleurs de fond ou toutes les couleurs.
Encore un grand merci à vous deux ^^
A très bien tôt
Hors ligne
citation :
Comment fais tu ton recadrage? Tu regardes la ou ce n'est pas blanc en fond et prends le minimum et le maximum?
Je balaye l'image, les lignes les unes après les autres. Le premier point que je rencontre me donne le y du point de départ du rectangle ensuite je regarde le point le plus à gauche (min) et le point le plus à droite(max) pour le x et la largeur. à chaque fois que je vois un point noir je dit que c'est le dernier, comme cela quand je n'en vois plus la coordonnée y est stockée ce qui me donne la hauteur du rectangle.
citation :
Le simple fait de supprimer le fond permet en fait de réduire la taille en mémoire. Mais si je lui donne une image en 4K (c'est juste un exemple), même en retirant le fond, la mémoire pourrait elle cracher?
A toi de voir l'algorithme le plus robuste.
Hors ligne
Ton algo est bien plus robuste xD
Comme tu l'as fait pour la fonction recadrage, pourrais tu décrire décomposition et séparation?
Décomposition analyse pour chaque pixels, si y les pixels à ses contours sont de la même couleurs. c'est la méthode d'Harrys il me semble?
Séparation lui crée des nouvelles images pour chaque forme et les renvoies?
Hors ligne
La méthode décomposition n'a plus lieu d'être puisque l'image de travail à été réalisée avec la méthode decompositionFond().
J'ai ajouté des commentaires dans le corps des méthodes pour t'aider.
Hors ligne
tintin02100 a écrit:
Encore un grand merci à vous deux
Oui. Merci.
T'aider autant n'a pas été de tout repos pour moi mais, je suis vraiment content du résultat.
Mussushu a écrit:
Entres-tu dans les paramètres de cette équation ?
Je ne vois absolument pas pourquoi tu poses cette question.
Hors ligne