Skip to content
Snippets Groups Projects
Commit 031b8ce4 authored by Louis Chmielewski's avatar Louis Chmielewski
Browse files

conversion des fichiers csv en png

parent 586e4333
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -12,4 +12,15 @@ author : Louis Chmielewski
- 17/03 : réalisation de la fonction est_bloc_uniforme pour la classe bloc
- 17/03 : réalisation de la fonction est_bloc_non_uniforme pour la classe bloc
- 17/03 : réalisation de la fonction sont_4_blocs_uniformes_proches pour la classe bloc
- 17/03 : réalisation de la fonction sont_4_blocs_uniformes_proches pour la classe bloc (début)
- 18/03 : réalisation de la fonction sont_4_blocs_uniformes_proches pour la classe bloc (fin)
- 20/03 : redéfinition de la fonction est_bloc_uniforme de la class Bloc
- 22/03 : création du fichier utilisable en ligne de commande, se nommant logiciel_lcom.py
- 22/03 : réalisation de la fonction charger image dans logiciel_lcom.py
- 24/03 : petite modification de la méthode init pour la class bloc
- 24/03 : début réalisation de la fonction découpe_image
......@@ -10,9 +10,17 @@
"""
from PIL import Image, ImageDraw
from bloc import *
from bloc import Bloc
def decoupe_image(bloc: Bloc, ordre: int) -> Bloc:
#importer image et recuperer sa taille
im = Image.open(input("Entrez le chemin du fichier : "))
im_rgb = im.convert('RGB')
def decoupe_image(image: Bloc, ordre: int) -> Bloc:
"""
Decoupe un bloc en quatre bloc "ordre" fois
Précondition :
......@@ -20,6 +28,19 @@ def decoupe_image(bloc: Bloc, ordre: int) -> Bloc:
$$$
"""
image.pixel_hl = (0,0)
image.pixel_lr = im.size
# if ordre !=0:
# en_4_blocs(bloc)
# decoupe_image(*arg: list[Bloc], ordre-1)
# if sont_4_blocs_uniformes_proches(bloc1, bloc2, bloc3, bloc4):
# # fonction à définir dans la classe bloc
# else:
# # fonction à définir dans la classe bloc
# else:
# # fonction à définir dans la classe bloc
\ No newline at end of file
......@@ -26,7 +26,7 @@ def charger_image(chemin_fichier: str):
im = Image.open(chemin_fichier)
return im.show()
elif chemin_fichier.endswith('.csv'):
return np.loadtxt(chemin_fichier, delimiter=',', dtype=np.uint8)
return #conversion du fichier csv en fichier png
else:
raise ValueError("Format de fichier non pris en charge.")
......@@ -40,5 +40,37 @@ def traitement_image(image):
"""
return decoupe_image(image)
def main():
"""
Fonction principale du fichier
Précondition :
Exemple(s) :
$$$
"""
# Définition des arguments en ligne de commande
parser = argparse.ArgumentParser(description="Traitement d'image avec un algorithme spécifique")
parser.add_argument("input_file", help="Chemin vers le fichier d'entrée (PNG ou CSV)")
parser.add_argument("subdivisions", type=int, help="Nombre de subdivisions pour l'algorithme")
parser.add_argument("output_file", nargs='?', default=None, help="Chemin vers le fichier de sortie (optionnel)")
args = parser.parse_args()
# Charger l'image
image = charger_image(args.input_file)
# Appliquer l'algorithme sur l'image
image_mod = traitement_image(image, args.subdivisions)
# Afficher ou enregistrer l'image résultante
if args.output_file:
cv2.imwrite(args.output_file, processed_image)
print(f"Image enregistrée sous {args.output_file}")
else:
cv2.imshow("Image traitée", processed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
No preview for this file type
......@@ -17,14 +17,12 @@ class Bloc:
"""Classe d'un bloc d'une image en pixel
"""
def __init__(self, bloc: Image):
def __init__(self, pixel_hl, pixel_lr):
"""
Initialise le type bloc à la valeur de l'image
"""
largeur, hauteur = image.size
pixel_hl = image.getpixel((0, 0))
pixel_lr = image.getpixel((largeur, hauteur))
self.bloc = bloc
self.pixel_hl = pixel_hl
self.pixel_lr = pixel_lr
def __eq__(self, other):
"""
......@@ -44,8 +42,8 @@ class Bloc:
$$$
"""
return est_couleur_proche(moyenne_couleur_bloc(bloc1), moyenne_couleur_bloc(bloc2)) and \n
est_couleur_proche(moyenne_couleur_bloc(bloc1), moyenne_couleur_bloc(bloc3)) and \n
return est_couleur_proche(moyenne_couleur_bloc(bloc1), moyenne_couleur_bloc(bloc2)) and \
est_couleur_proche(moyenne_couleur_bloc(bloc1), moyenne_couleur_bloc(bloc3)) and \
est_couleur_proche(moyenne_couleur_bloc(bloc1), moyenne_couleur_bloc(bloc4))
......@@ -87,13 +85,13 @@ class Bloc:
$$$
"""
bloc1 = pixel_hl = image.getpixel((0, 0)) and \n
pixel_lr = image.getpixel((largeur/2, hauteur/2)) \n
bloc2 = pixel_hl = image.getpixel((largeur/2, 0)) and \n
pixel_lr = image.getpixel((largeur, hauteur/2)) \n
bloc3 = pixel_hl = image.getpixel((0, hauteur/2)) and \n
pixel_lr = image.getpixel((largeur/2, hauteur)) \n
bloc4 = pixel_hl = image.getpixel((largeur/2, hauteur/2)) and \n
bloc1 = pixel_hl = image.getpixel((0, 0)) and \
pixel_lr = image.getpixel((largeur/2, hauteur/2)) \
bloc2 = pixel_hl = image.getpixel((largeur/2, 0)) and \
pixel_lr = image.getpixel((largeur, hauteur/2)) \
bloc3 = pixel_hl = image.getpixel((0, hauteur/2)) and \
pixel_lr = image.getpixel((largeur/2, hauteur)) \
bloc4 = pixel_hl = image.getpixel((largeur/2, hauteur/2)) and \
pixel_lr = image.getpixel((largeur, hauteur))
return [bloc1, bloc2, bloc3, bloc4]
......
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
:mod:`fonctions` module : convertisseur de fichiers csv pour obtenir en rgb
:author: Louis Chmielewski
:date: 2024 mars
"""
import csv
from PIL import Image, ImageDraw
# Créer une nouvelle image avec un fond noir
width, height = 256, 256
image = Image.new("RGB", (width, height), "black")
draw = ImageDraw.Draw(image)
# Chemin vers le fichier CSV
csv_file = "assets/mystere.csv"
# Lire les données à partir du fichier CSV
with open(csv_file, newline='') as csvfile:
csv_reader = csv.reader(csvfile)
for row in csv_reader:
# Convertir les valeurs de la ligne en entiers
x1, y1, x2, y2, r, g, b = map(int, row)
# Dessiner un rectangle avec la couleur spécifiée
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b))
# Afficher l'image
image.show()
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment