Enoder commited on
Commit
2a411d9
·
verified ·
1 Parent(s): fd65e06

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -15
app.py CHANGED
@@ -3,9 +3,9 @@ import numpy as np
3
  from PIL import Image
4
  import random
5
 
6
- # Listes pour stocker les pixels validés et non validés
7
- oe = []
8
- nn = []
9
 
10
  # Fonction pour traiter et redimensionner l'image importée
11
  def process_uploaded_image(uploaded_file):
@@ -13,7 +13,7 @@ def process_uploaded_image(uploaded_file):
13
  pixel_data = np.array(image)
14
  return pixel_data
15
 
16
- # Fonction pour générer une image en fonction des pixels voisins
17
  def generate_image_from_neighbors(base_pixels):
18
  height, width, _ = base_pixels.shape
19
  generated_image = np.zeros((height, width, 3), dtype=np.uint8)
@@ -27,7 +27,7 @@ def generate_image_from_neighbors(base_pixels):
27
  for dj in range(-1, 2): # -1, 0, 1
28
  if 0 <= i + di < height and 0 <= j + dj < width:
29
  surrounding_pixels.append(base_pixels[i + di, j + dj])
30
-
31
  # Calculer la moyenne des pixels environnants
32
  surrounding_pixels = np.array(surrounding_pixels)
33
  new_pixel_color = np.mean(surrounding_pixels, axis=0)
@@ -35,6 +35,12 @@ def generate_image_from_neighbors(base_pixels):
35
  # Ajouter une petite variation aléatoire pour générer de l'unicité
36
  variation = np.array([random.randint(-20, 20) for _ in range(3)])
37
  new_pixel_color = np.clip(new_pixel_color + variation, 0, 255).astype(np.uint8)
 
 
 
 
 
 
38
  generated_image[i, j] = new_pixel_color
39
 
40
  return Image.fromarray(generated_image)
@@ -64,10 +70,9 @@ if uploaded_file:
64
  col1, col2 = st.columns(2) # Créez deux colonnes pour les boutons
65
  with col1:
66
  if st.button("Oui"):
67
- # Enregistrer les pixels de l'image générée dans la liste "oe"
68
  new_pixels = list(generated_image.getdata())
69
- oe.extend(new_pixels) # Ajouter les nouveaux pixels à la liste "oe"
70
- oe = list(set(map(tuple, oe))) # Enlever les doublons
71
  st.success("Image validée!")
72
 
73
  # Réinitialiser l'image générée après validation
@@ -75,21 +80,20 @@ if uploaded_file:
75
 
76
  with col2:
77
  if st.button("Non"):
78
- # Enregistrer les pixels de l'image générée dans la liste "nn"
79
  new_pixels = list(generated_image.getdata())
80
- nn.extend(new_pixels) # Ajouter les nouveaux pixels à la liste "nn"
81
- nn = list(set(map(tuple, nn))) # Enlever les doublons
82
  st.error("Image rejetée!")
83
 
84
  # Réinitialiser l'image générée après rejet
85
  generated_image = None
86
 
87
- # Affichage des listes de pixels validés et non validés
88
  st.write("Pixels validés (oe):", len(oe), "pixels enregistrés.")
89
  st.write("Pixels non validés (nn):", len(nn), "pixels enregistrés.")
90
 
91
- # Option pour réinitialiser les listes
92
- if st.button("Réinitialiser les listes"):
93
  oe.clear()
94
  nn.clear()
95
- st.success("Les listes de pixels ont été réinitialisées.")
 
3
  from PIL import Image
4
  import random
5
 
6
+ # Ensembles pour stocker les pixels validés et non validés
7
+ oe = set() # Pixels validés
8
+ nn = set() # Pixels non validés
9
 
10
  # Fonction pour traiter et redimensionner l'image importée
11
  def process_uploaded_image(uploaded_file):
 
13
  pixel_data = np.array(image)
14
  return pixel_data
15
 
16
+ # Fonction pour générer une image en fonction des pixels voisins avec variation
17
  def generate_image_from_neighbors(base_pixels):
18
  height, width, _ = base_pixels.shape
19
  generated_image = np.zeros((height, width, 3), dtype=np.uint8)
 
27
  for dj in range(-1, 2): # -1, 0, 1
28
  if 0 <= i + di < height and 0 <= j + dj < width:
29
  surrounding_pixels.append(base_pixels[i + di, j + dj])
30
+
31
  # Calculer la moyenne des pixels environnants
32
  surrounding_pixels = np.array(surrounding_pixels)
33
  new_pixel_color = np.mean(surrounding_pixels, axis=0)
 
35
  # Ajouter une petite variation aléatoire pour générer de l'unicité
36
  variation = np.array([random.randint(-20, 20) for _ in range(3)])
37
  new_pixel_color = np.clip(new_pixel_color + variation, 0, 255).astype(np.uint8)
38
+
39
+ # Vérification pour changer aléatoirement le pixel pour plus d'unicité
40
+ if random.random() < 0.2: # 20% de chance de changer le pixel
41
+ new_pixel_color += np.array([random.randint(-50, 50) for _ in range(3)])
42
+ new_pixel_color = np.clip(new_pixel_color, 0, 255).astype(np.uint8)
43
+
44
  generated_image[i, j] = new_pixel_color
45
 
46
  return Image.fromarray(generated_image)
 
70
  col1, col2 = st.columns(2) # Créez deux colonnes pour les boutons
71
  with col1:
72
  if st.button("Oui"):
73
+ # Enregistrer les pixels de l'image générée dans l'ensemble "oe"
74
  new_pixels = list(generated_image.getdata())
75
+ oe.update(map(tuple, new_pixels)) # Ajouter les nouveaux pixels à l'ensemble "oe"
 
76
  st.success("Image validée!")
77
 
78
  # Réinitialiser l'image générée après validation
 
80
 
81
  with col2:
82
  if st.button("Non"):
83
+ # Enregistrer les pixels de l'image générée dans l'ensemble "nn"
84
  new_pixels = list(generated_image.getdata())
85
+ nn.update(map(tuple, new_pixels)) # Ajouter les nouveaux pixels à l'ensemble "nn"
 
86
  st.error("Image rejetée!")
87
 
88
  # Réinitialiser l'image générée après rejet
89
  generated_image = None
90
 
91
+ # Affichage des ensembles de pixels validés et non validés
92
  st.write("Pixels validés (oe):", len(oe), "pixels enregistrés.")
93
  st.write("Pixels non validés (nn):", len(nn), "pixels enregistrés.")
94
 
95
+ # Option pour réinitialiser les ensembles
96
+ if st.button("Réinitialiser les ensembles"):
97
  oe.clear()
98
  nn.clear()
99
+ st.success("Les ensembles de pixels ont été réinitialisés.")