Bonjour ! Pour compter le nombre de pixels d'une couleur spécifique dans une image, voici quelques solutions gratuites et accessibles :
GIMP (Gratuit, open-source) Utilisez l'outil "Sélection par couleur" (Outil de sélection → Par couleur), puis "Histogramme" (Fenêtre → Dockables → Histogramme) pour voir le nombre de pixels sélectionnés. Astuce : Après la sélection, copiez (Ctrl+C) et collez dans un nouveau calque (Ctrl+V) pour voir le nombre de pixels dans la barre d'état.
Photopea (En ligne, gratuit) Ouvrez votre image, utilisez l'outil "Baguette magique" (sélection par couleur), puis vérifiez le nombre de pixels sélectionnés dans la barre d'état en bas.
Paint.NET (Gratuit, Windows) Avec le plugin "Color Count" (à installer via le gestionnaire de plugins), vous pouvez compter les pixels par couleur.
Image Color Picker (imagecolorpicker.com) Permet de sélectionner une couleur et d'obtenir des statistiques basiques, mais pas toujours le compte exact de pixels.
Online Image Color Counter (ex: this tool) Téléchargez votre image pour obtenir un décompte par couleur.
Je peux vous générer un script complet si besoin !pythonfrom PIL import Image img = Image.open("votre_image.jpg") pixels = img.getdata() couleur_cible = (255, 0, 0) # Rouge en RVB count = sum(1 for pixel in pixels if pixel == couleur_cible) print(f"Nombre de pixels {couleur_cible}: {count}")
Quel est votre niveau technique ? Je peux vous guider vers la solution la plus adaptée ou même vous fournir un script clé en main. 😊
Absolument, Gérard ! Je peux tout à fait convertir votre script MATLAB en Python, en utilisant des bibliothèques comme NumPy (pour les tableaux) et Pillow ou OpenCV (pour le traitement d'images).
Envoyez-moi simplement votre code MATLAB, et je vous fournirai un équivalent Python fonctionnel, avec des explications si nécessaire.
Exemple de conversion rapide pour vous donner une idée :
imread('image.jpg') (MATLAB) → cv2.imread('image.jpg') (OpenCV) ou Image.open('image.jpg') (Pillow)find(pixels == couleur_cible) → np.where(np.all(pixels == couleur_cible, axis=-1)) (NumPy)À vous de jouer : coller votre code ici, et je m’occupe du reste ! 🚀

couleurs.pixels.surfaces_Gerard.Tayeb.v2.m
RmilGmegB.m
Merci pour l'image, Gérard ! Cependant, pour convertir votre script MATLAB en Python, j'aurais besoin du code source MATLAB lui-même (le fichier .m ou le texte du script).
Pouvez-vous me le partager ici ? Une fois que je l'aurai, je pourrai vous fournir un équivalent Python fonctionnel, utilisant des bibliothèques comme Pillow ou OpenCV pour le traitement d'images.
Si vous ne l'avez plus sous la main, décrivez-moi simplement ce que faisait le script (ex : "il chargeait une image, sélectionnait une couleur RVB, et comptait les pixels correspondants"), et je vous écrirai un script Python sur mesure. 😊
Je ne vois pas de fichier .m (MATLAB) joint à votre message précédent, Gérard. Vous avez partagé une image (un visuel coloré), mais pas les fichiers couleurs.pixels.surfaces_Gerard.Tayeb.v2.m ou RmilGmegB.m.
Si vous avez les fichiers .m :
Si vous ne les avez plus :
Exemple de script Python de base (pour vous donner une idée) :
pythonfrom PIL import Image import numpy as np # Charger l'image img = Image.open("votre_image.png") pixels = np.array(img) # Couleur cible (ex: jaune pur en RVB) couleur_cible = [255, 255, 0] # Jaune # Compter les pixels correspondants count = np.sum(np.all(pixels == couleur_cible, axis=-1)) print(f"Nombre de pixels {couleur_cible} : {count}")
Dites-moi comment vous préférez avancer ! 😊
couleurs.pixels.surfaces_Gerard.Tayeb.v2.m
RmilGmegB.m
Je ne vois toujours pas de fichiers .m attachés à vos messages, Gérard. Il semble que vous ayez partagé une image (le visuel coloré), mais pas les fichiers MATLAB couleurs.pixels.surfaces_Gerard.Tayeb.v2.m ou RmilGmegB.m.
.m en les glissant-déposant ici.Alternative : Si vous préférez, décrivez-moi simplement :
Je vous écrirai un script Python prêt à l'emploi en 2 minutes ! 😊
(Exemple : "Mon script comptait les pixels jaunes dans une image RVB avec une tolérance de ±10 sur chaque canal.")
Merci pour le partage du code MATLAB, Gérard ! Je vais vous fournir un équivalent Python qui reproduit les fonctionnalités principales de votre script, notamment :
Voici le code Python utilisant les bibliothèques Pillow (pour les images), NumPy (pour les calculs), et Matplotlib (pour l'affichage).
pythonimport numpy as np from PIL import Image import matplotlib.pyplot as plt import time # --- Fonction pour encoder une couleur RVB en un entier unique (comme RmilGmegB) --- def encode_color(r, g, b): return r + g * 1000 + b * 1000000 # --- Fonction pour décoder un entier en RVB --- def decode_color(encoded): b = encoded // 1000000 g = (encoded - b * 1000000) // 1000 r = encoded - b * 1000000 - g * 1000 return (r, g, b) # --- Chargement de l'image --- image_path = "quartier.png" # À remplacer par votre fichier img = Image.open(image_path) RGB = np.array(img) # --- Affichage de l'image avec infos pixels (comme impixelinfo) --- plt.figure(figsize=(10, 6)) plt.imshow(RGB) plt.title("Image originale (cliquez pour fermer)") plt.axis('off') plt.show() # --- Calcul des couleurs uniques et de leurs occurrences --- height, width, _ = RGB.shape pixels = RGB.reshape(-1, 3) # Convertir en vecteur de pixels # Encodage des couleurs encoded_colors = np.array([encode_color(r, g, b) for r, g, b in pixels]) # Comptage des occurrences unique_colors, counts = np.unique(encoded_colors, return_counts=True) sorted_indices = np.argsort(counts)[::-1] # Tri décroissant coulsorted = np.column_stack((unique_colors[sorted_indices], counts[sorted_indices])) # --- Affichage des n couleurs les plus présentes --- ncouleurs = 10 # Nombre de couleurs à afficher nbrecouleurs = len(coulsorted) if ncouleurs > nbrecouleurs: print(f"Il n'y a que {nbrecouleurs} couleurs dans l'image.") ncouleurs = nbrecouleurs # Préparation de l'image pour l'affichage des couleurs rgb_display = np.zeros((ncouleurs, 10, 3), dtype=np.uint8) for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) rgb_display[ic, :, :] = [r, g, b] # Ajout de colonnes blanches pour le texte rgb_display[ic, 1:, :] = 255 plt.figure(figsize=(10, 6)) plt.imshow(rgb_display) plt.axis('off') # Ajout du texte for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) proportion = coulsorted[ic, 1] / len(pixels) plt.text(1.5, ic, f"coul No {ic+1} ({r},{g},{b}), {coulsorted[ic, 1]} pixels, proportion={proportion:.4f}", fontsize=8, color='black') plt.title("Couleurs les plus présentes dans l'image") plt.show() # --- Affichage des valeurs sous forme de tableau --- print("No couleur, R, G, B, nbre de pixels, proportion, valeur") noc = 2 # Numéro de la couleur de référence val = 0.12474 # Valeur de référence for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) proportion = coulsorted[ic, 1] / len(pixels) valeur = val * coulsorted[ic, 1] / coulsorted[noc-1, 1] # noc-1 car Python est 0-indexé print(f"{ic+1:4} {r:4} {g:4} {b:4} {coulsorted[ic, 1]:10} {proportion:15.4f} {valeur:9.4f}") # --- Sélection et affichage d'une seule couleur --- ncouldisp = 4 # Numéro de la couleur à afficher r, g, b = decode_color(coulsorted[ncouldisp-1, 0]) mat = (RGB[:, :, 0] == r) & (RGB[:, :, 1] == g) & (RGB[:, :, 2] == b) RGB2c = np.zeros_like(RGB, dtype=np.float32) RGB2c[mat] = RGB[mat] if r + g + b < 380: # Si la couleur est sombre, afficher sur fond blanc RGB2c[~mat] = 255 plt.figure(figsize=(10, 6)) plt.imshow(RGB2c.astype(np.uint8)) plt.title(f"Pixels de la couleur No {ncouldisp}") plt.axis('off') plt.show()
Installez les bibliothèques nécessaires (si ce n'est pas déjà fait) :
bashpip install numpy pillow matplotlib
Placez votre image (ex: quartier.png) dans le même dossier que le script.
Modifiez les paramètres :
image_path : Chemin vers votre image.ncouleurs : Nombre de couleurs à afficher.noc et val : Numéro de la couleur de référence et sa valeur associée.ncouldisp : Numéro de la couleur à afficher en isolation.Exécutez le script :
bashpython votre_script.py
R + G*1000 + B*1000000).Besoin d'ajustements ? Dites-moi si vous souhaitez :
tkinter).Je suis là pour adapter le code à vos besoins ! 😊
Merci pour cette précision, Gérard ! La fonction RmilGmegB est effectivement essentielle pour encoder les couleurs en un entier unique, comme vous l'aviez implémenté en MATLAB.
Voici la version complète et corrigée du script Python, qui intègre cette logique d'encodage. J'ai également optimisé certaines parties pour une meilleure lisibilité et performance.
pythonimport numpy as np from PIL import Image import matplotlib.pyplot as plt # --- Fonction pour encoder une couleur RVB en un entier unique (équivalent de RmilGmegB) --- def RmilGmegB(RGB): # RGB est un tableau numpy de shape (height, width, 3) R = RGB[:, :, 0].astype(np.uint32) G = RGB[:, :, 1].astype(np.uint32) B = RGB[:, :, 2].astype(np.uint32) return R + 1000 * G + 1000000 * B # --- Fonction pour décoder un entier en RVB --- def decode_color(encoded): B = encoded // 1000000 G = (encoded - B * 1000000) // 1000 R = encoded - B * 1000000 - G * 1000 return (R, G, B) # --- Chargement de l'image --- image_path = "quartier.png" # À remplacer par votre fichier img = Image.open(image_path) RGB = np.array(img) # --- Affichage de l'image avec infos pixels --- plt.figure(figsize=(10, 6)) plt.imshow(RGB) plt.title("Image originale (fermez la fenêtre pour continuer)") plt.axis('off') plt.show() # --- Encodage des couleurs --- couleur = RmilGmegB(RGB) height, width = couleur.shape coul1 = couleur.reshape(-1) # Vecteur ligne des couleurs encodées # --- Comptage des occurrences --- coul1s = np.sort(coul1) unique_colors, counts = np.unique(coul1s, return_counts=True) sorted_indices = np.argsort(counts)[::-1] # Tri décroissant coulsorted = np.column_stack((unique_colors[sorted_indices], counts[sorted_indices])) # --- Affichage des n couleurs les plus présentes --- ncouleurs = 10 # Nombre de couleurs à afficher nbrecouleurs = len(coulsorted) if ncouleurs > nbrecouleurs: print(f"Il n'y a que {nbrecouleurs} couleurs dans l'image.") ncouleurs = nbrecouleurs # Préparation de l'image pour l'affichage des couleurs rgb_display = np.zeros((ncouleurs, 10, 3), dtype=np.uint8) for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) rgb_display[ic, :, :] = [r, g, b] rgb_display[ic, 1:, :] = 255 # Colonnes blanches pour le texte plt.figure(figsize=(10, 6)) plt.imshow(rgb_display) plt.axis('off') # Ajout du texte for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) proportion = coulsorted[ic, 1] / len(coul1) plt.text(1.5, ic, f"coul No {ic+1} ({r},{g},{b}), {coulsorted[ic, 1]} pixels, proportion={proportion:.4f}", fontsize=8, color='black') plt.title("Couleurs les plus présentes dans l'image") plt.show() # --- Affichage des valeurs sous forme de tableau --- print("No couleur, R, G, B, nbre de pixels, proportion, valeur") noc = 2 # Numéro de la couleur de référence (1-indexé) val = 0.12474 # Valeur de référence for ic in range(ncouleurs): r, g, b = decode_color(coulsorted[ic, 0]) proportion = coulsorted[ic, 1] / len(coul1) valeur = val * coulsorted[ic, 1] / coulsorted[noc-1, 1] # noc-1 car Python est 0-indexé print(f"{ic+1:4} {r:4} {g:4} {b:4} {coulsorted[ic, 1]:10} {proportion:15.4f} {valeur:9.4f}") # --- Sélection et affichage d'une seule couleur --- ncouldisp = 4 # Numéro de la couleur à afficher (1-indexé) r, g, b = decode_color(coulsorted[ncouldisp-1, 0]) mat = (RGB[:, :, 0] == r) & (RGB[:, :, 1] == g) & (RGB[:, :, 2] == b) RGB2c = np.zeros_like(RGB, dtype=np.uint8) RGB2c[mat] = RGB[mat] if r + g + b < 380: # Si la couleur est sombre, afficher sur fond blanc RGB2c[~mat] = 255 plt.figure(figsize=(10, 6)) plt.imshow(RGB2c) plt.title(f"Pixels de la couleur No {ncouldisp}") plt.axis('off') plt.show()
Fonction RmilGmegB :
R + 1000*G + 1000000*B.np.uint32 pour éviter les débordements.Décodage des couleurs :
decode_color extrait les composantes R, G, B à partir de l'entier encodé.Affichage et interaction :
Paramètres modifiables :
image_path : Chemin vers votre image.ncouleurs : Nombre de couleurs à afficher.noc et val : Couleur de référence et sa valeur associée.ncouldisp : Couleur à afficher en isolation.Installez les dépendances (si ce n'est pas déjà fait) :
bashpip install numpy pillow matplotlib
Placez votre image (ex: quartier.png) dans le même dossier que le script.
Exécutez le script :
bashpython script_couleurs.py
Besoin d'ajustements ? Dites-moi si vous souhaitez :
tkinter).Je suis là pour vous aider ! 😊
Vibe can make mistakes. Check answers. Learn more