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.
from 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) :
from 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).
import 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) :
pip install numpy pillow matplotlibPlacez 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 :
python votre_script.pyR + 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.
import 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) :
pip install numpy pillow matplotlibPlacez votre image (ex: quartier.png) dans le même dossier que le script.
Exécutez le script :
python script_couleurs.pyBesoin d'ajustements ? Dites-moi si vous souhaitez :
tkinter).Je suis là pour vous aider ! 😊
Vibe can make mistakes. Check answers. Learn more