Forum >> Principianti >> Aiuto esercizio python prima esperienza

Pagina: 1

Messaggio annotato da Daniele aka Palmux :
Questa discussione è stata spostata dalla categoria Blog.
Sono iscritto al primo anno di informatica e mi è stato dato questo esercizio potete aiutarmi dandomi anche delle delucidazioni perché non saprei proprio come procedere grazie.
'''Il vicinato di un pixel p di un'immagine sono i pixel adiacenti a p sia per
lato che per diagonale. Se e' un pixel di bordo il vicinato comprende solamente i pixel adiacenti contenuti nell'immagine. I pixel del vicinato sono ordinati in senso orario a partire da quello in alto a sinistra. Qui sotto e' mostrato un pixel p e i pixel del suo vicinato numerati secondo l'ordine suddetto:


1 | 2 | 3
---|---|---
8 | p | 4
---|---|---
7 | 6 | 5


Per distanza di due colori intendiamo la somma delle differenze assolute delle tre componenti colore (RGB). Chiamiamo edging la seguente trasformazione di un'immagine: Il colore di ogni pixel p diventa uguale al colore piu' distante dal colore di p nel vicinato di p. Se ci sono piu' colori alla massima distanza si sceglie il primo nell'ordine del vicinato.
Scrivere una funzione edging(fname_in, k, fname_out) che presa in input un'immagine in formato PNG nel file fname_in e un intero k >= 1, applica k volte la trasformazione di edging all'immagine e salva l'immagine ottenuta nel file fname_out. Applicare la trasformazione k volte significa che la prima volta la trasformazione e' applicata all'immagine di input, la seconda volta e' applicata all'immagine ottenuta dalla prima applicazione, la terza volta e' applicata all'immagine ottenuta dalla seconda applicazione, e cosi' via.
miron@lenny:~
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import Image
>>> image = Image.open("Pictures/C8E 80x73.png")
>>> pixels = image.load()
>>> width, height = image.size
>>> for y in range(height):
...     for x in range(width):
...         if pixels[x,y] == (255, 255, 255, 0):
...             print " ",
...         else:
...             print "#",
...     print
...
                                                                        # # #
                                                                    # # # # # #
                                                                    # # # # # # # #
                                                                  # # # # # # # # # #
                                                      #       # # # # # # # # # # # # # # #
                                                    # # # # # # # # # # # # # # # # # # # # #
                                                # # # # # # # # # # # # # # # # # # # # # # # # #
                                              # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                              # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                              # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                            # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                            # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                            # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
                                            # # # # # # # # # # # # # # # #       # # # # # #   # # # # # #
                                            # # # # # # # # # # # #                         # # # # # # # #
                                            # # # # # # # # # # # #                               # # # # #
                                            # # # # # # # # # # # #                                 # # # #
                                            # # # # # # # # # # #                                   # # # #
                                            # # # # # # # # # #                                       # # # #
                                            # # # # # # # # #                                         # # # #
                                            # # # # # # # # # #                     # # # # # #       # # # #
                                            # # # # # # # # # # # # #               # # # # # # # #     # # # #
                                            # # # # # # # # # # # # # # #         # # # # # # # # #     # # #
                                            # # # # # # # # # # # # # # # # #                 # # #     # # # #
                                            # # # # # # # # # # # # # # # # #         # # # # #         # # # #
                                            # # # # # # # # # # # # # # # #         # # # # # # #       # # #
                                            # # # # # # # # # # # # # # # #         # # # # # #         # # #
                                            # # # # # # # # # # # # # # # #         # # # # #           # # #
                                          # # # # # # # # # #   # # # # # #           # #               # # # #
                                          # # # # # # # # # #   # # # # # #                             # # # #
                                          # # # # # # # # #     # # # # # # #                           # # # #
                                          # # # # # # # #   # # # # # # # #                             # # # #
                                          # # # # # # # # # # # # # # # #             # #               # # # #
                                            # # # # # # # # # # # # # # # # # # # #   # #               # # # #
                                            # # # # # # # # # # # # # # # # # # # #   # #             # # # #
                                            # # # # # # # # # # # # # # # # # # # # #                 # # # #
                                            # # # # # # # # # # # # # # # # # # # # # #               # # # #
                                            # # # # # # # # # # # # # # # # # # # # # # # #       # # # # # #
                                              # # # # # # # # # # # # # # # # # # # # # # #       # # # # #
                                                # # # # # # # # # # # # # # # # # # # # # # #   # # # #
                                                  # # # # # # # # # # # # # # # # # #     # #   # # # #
                                                  # # # # # # # # # # # # # # # #         # # # # # # #
                                                  # # # # # # # # # # # # # # # #         #   # # # # #
                                                  # # # # # # # # # # # # # # #           # # # # # # #
                                                    # # # # # # # # # # # # # #   # # # # # # # # # #
                                                    # # # # # # # # # # # # # # # # # # # # # # # # #
                                                      # # # # # # # # # # # # # # # # # # # # # # # #
                                                      # # # # # # # # # # # # # # # # # # # # # # # #
                                                      # # # # # # # # # # # # # # # # # # # # # #   #
                                                      # # # # # # # # # # # # # # # # # # # # #     #
                                                      # # # # # # # # # # # # # # # # # # # #       #
                                                      # # # # # # # # # # # # # # # # # #           #
                                                      # # # # # # # # # # # # # # # # #             # # # #
                                                      # # # # # # # # # # # # # # #                 # # # # # #
                                                    # # # # # # # # # # #                           # # # # # # # #
                                                # # # # # # # # # # # # #                           # # # #     # # # #
                                            # # # # # # # # # # # # # #                             # # # #     # # # # # #
                                        # # # # # # # # # # # # # # # #   #                           # # #       #     # # # #
                                  # # # # # # # # # # # # # # # # # # # # #                           # # #       #   # # # # # # # #
                              # # # # # # # # # # # # # # # # # # # # # # # # # #                       # #       #   # # # # # # # # # # # #
                          # # # # # # # # # # # # # # # # # # # # # # # # # # #                         # #     # #         # # # # #     # # # #
                    # # # # # # # # # # # # # # # # # # # # # # # #   # # # # #                       # #     # #             # # #   # #     # # # #
              # # # #           # # # # # # # # # # # # # # # # # # #   # # # # #                   # #       # #             # #     # # #   # # # # #
            # # # #           # # # # # #   # # # # # # # # # # # #       # # # #                 # #       # #               # #     # # # # # #   # # #
          # # # #           # # #     # # # # # # # # # # # # # # #       # # #               # # #       # #   # # # # #     # #     # # # # #       # # #
        # # # #           # # #     # # # #   # # #     # # # # #         # # #           # # #       # # #   # # # # # #     # #     # # #     #       # # #
      # #   #           # # #       # # # # #   # # # #     # # # # # # # # # # # # # # # #         # #     # # # # # # #       #             # # # #     # #
    # # # # #         # # # #       # # # # # # # # # # # #         # # # # # # #               # # #     # # #     # # #       # #           # # # #       # #
  # # # # #         # # # #       # # #   # # # # # # #   #                                 # # #         # #       # # #       # #             # #           #
  # # # # #       # # # #         # # #       # # # # # # # #                   #                         # #         # #       # #           # # #           #
# # # # # #     # # # #           # #             # # # # # # # # # # # # # # # #                       # #           #
# # # #         # # # #         # #
  # # #         # # #
>>>
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
A me la foto dovrebbe diventare come il file check . Anche per il fatto di far ripetere k volte la modifica come si può fare..grazie
Allegati
A me la foto dovrebbe diventare come il file check . Anche per il fatto di far ripetere k volte la modifica come si può fare..grazie

THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ok..Lei nella foto fa il print con spazi e # io per sostituire i colori come posso fare?
Ok..Lei nella foto fa il print con spazi e # io per sostituire i colori come posso fare?
pixels[x,y] restituisce una tupla RGBA che rappresenta il colore del punto (x,y). pixels[x,y-1] e pixels[x,y+1] sono i punti posti rispettivamente al di sopra e di sotto a quello in esame. Lo stesso vale per x. L'esercizio non dovrebbe riuscirti troppo difficile con queste informazioni; alternativamente non posso che consigliarti di leggere il tutorial del linguaggio, o rischi di non superare l'esame al di là dell'esercizio fatto o meno...



buon lavoro,

©
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Il colore più distante quale sarebbe?
Il colore più distante quale sarebbe?
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Messaggio annotato da :
- Come posso utilizzare il programma con immagini di dimensione compresa tra 70 e 300px?

+ Usa un terminale (e un monitor) di grosse dimensioni.

- Come posso fare in modo che il disegno riprodotto con i simboli scelti possa essere di dimensione = o almeno simile a quella originale e non 6-7-8 volte piu grande?

+ Riduci la dimensione del carattere (o usa un monitor più piccolo).

©
Ciao a tutti,

io sto apprendendo Python, e questo esercizio, basandomi sul tutorial di script fatto da C8E, mi ha aiutato molto. Ho adattato il codice a Python 3.4 (che è la versione che utilizzo), il tutto è postato qui sotto:

from PIL import Image

image = Image.open("C:/Users/nome_utente/Desktop/images.jpg")
pixels = image.load()
width, height = image.size

for y in range(height):
for x in range(width):
if pixels[x, y] == (255, 255, 255):
print(" ", end=" "),
else:
print("#", end=" "),
print()

ho tolto il canale alpha, perchè, usando jpg, molte immagini, il 90%, sono RGB e se utilizzavo anche alpha ottenevo solo una serie di # senza senso, oppure dgli spazi vuoti senza logica. tutto questo però non riesco a farlo funzionare correttamente con qualunque immagine io scarichi.......nn capisco perchè. se l'immagine è + grande di un'icona da 70x70 pixels non funziona, inoltre non capisco perchè se uso per questo programma un'immagine di 70x70 mi salta fuori una figura 6 volte + grande della dimensione originale (e talvolta non assomiglia nemmeno all'immagine originale)...inoltre non funziona con immagini a colori, anche perchè non so l'algoritmo per poter sfruttare questo programma anche con figure diverse dal bianco e nero. Riassumo le mie curiosità x la modifica del codice:
- Come posso utilizzare il programma con immagini di dimensione compresa tra 70 e 300px?
- Come posso utilizzare il programma anche con immagini a colori?
- Come posso fare in modo che il disegno riprodotto con i simboli scelti possa essere di dimensione = o almeno simile a quella originale e non 6-7-8 volte piu grande?

Potete aiutarmi a trovare e correggere i miei errori?

Buona serata
Carlo.


Pagina: 1



Esegui il login per scrivere una risposta.