Topic: Manipolare un'immagine in formato png  (Letto 856 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Shark95

  • python unicellularis
  • *
  • Post: 19
  • Punti reputazione: 0
    • Mostra profilo
Manipolare un'immagine in formato png
« il: Giugno 22, 2017, 00:51 »
Salve a tutti, avrei bisogno di chiedervi un'informazione. Ho la necessità di scrivere un algoritmo che prenda un'immagine in formato png di dimensioni fissate e di creare un'altra immagine della stessa dimensione in cui sia presente solo ciò che si trova in primo piano nella prima immagine.
Ad esempio se io ho un'immagine con un gatto in primo e piano e dietro il gatto si trova dell'erba, la seconda immagine creata dovrà presentare solo il gatto. Non importa se i colori cambiano: ad esempio se il gatto diventa grigio anziché arancione, l'importante è che venga visualizzato solo il primo piano.

Ho già girovagato su internet, ma ho avuto scarsi successi. Qualcuno può darmi qualche dritta?

Grazie in anticipo  :)

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:Manipolare un'immagine in formato png
« Risposta #1 il: Giugno 22, 2017, 10:48 »
Il link di base da cui partire per impostare il problema è questo https://www.xkcd.com/1425/

Una volta capito *a fondo* quello che c'è scritto lì, il problema generale si chiama "image recognition", quindi googlerei per "python image recognition". Non è che non esistano librerie per affrontare questi problemi... OpenCV è la prima cosa che viene in mente. Non credo però che esistano bacchette magiche e molte ricette da copincollare, in questo campo.

Offline Shark95

  • python unicellularis
  • *
  • Post: 19
  • Punti reputazione: 0
    • Mostra profilo
Re:Manipolare un'immagine in formato png
« Risposta #2 il: Giugno 25, 2017, 16:09 »
Grazie per la risposta RicPol e perdonami per il ritardo  :)
La settimana scorsa ho provato con OpenCV, cercando algoritmi già sviluppati e ne ho trovato uno che riesce a prendere in input l'immagine che voglio io e a crearne una copia manipolata in cui ciò che sta in background scompare, però non del tutto. Nell'esempio che ho fatto dell'immagine con il gatto, lo sfondo non scompare interamente. Rimangono alcune figure geometriche (che fra l'altro nell'immagine di partenza nemmeno ci sono) colorate di bianco e ciò ovviamente non risolve il mio problema.
A pensarci bene, in questo caso potrei anche restringere un po' la dimensione dell'immagine eliminando tutti i pezzi bianchi che rimangono sullo sfondo, però non so come fare...puoi aiutarmi? Ti ringrazio in anticipo :)

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:Manipolare un'immagine in formato png
« Risposta #3 il: Giugno 25, 2017, 16:35 »
Rimangono alcune figure geometriche (che fra l'altro nell'immagine di partenza nemmeno ci sono) colorate di bianco e ciò ovviamente non risolve il mio problema.

Nella completa ignoranza del tuo specifico problema, come si comporta l'algoritmo convertendo l'immagine eventualmente a colori in gradazioni di grigio? Tieni presente che OpenCV è in grado di riconoscere determinati soggetti, ad esempio facce di persone, se sai che in primo piano ci sono appunto delle facce puoi tenerne conto.

A pensarci bene, in questo caso potrei anche restringere un po' la dimensione dell'immagine eliminando tutti i pezzi bianchi che rimangono sullo sfondo, però non so come fare...puoi aiutarmi? Ti ringrazio in anticipo :)

Forse vuoi fare il cropping dell'immagine? Un esempio:
http://www.pyimagesearch.com/2014/01/20/basic-image-manipulations-in-python-and-opencv-resizing-scaling-rotating-and-cropping/

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:Manipolare un'immagine in formato png
« Risposta #4 il: Giugno 25, 2017, 19:58 »
Mah sai, non avendo nessuna idea del tuo problema specifico né di quali sono gli algoritmi che hai copiato, non è che si possa dire granché. Ma è proprio questo il punto. In questo campo ogni situazione è diversa, e bisogna avere una comprensione piuttosto accurata degli strumenti che si usano per adattarli al proprio caso specifico. Tra l'altro, ho buttato lì "OpenCV" perché è stata la prima cosa che mi è venuta in mente senza googlare, ma non è che non ci siano anche altri strumenti, eh.

@giornale:
> Forse vuoi fare il cropping dell'immagine?
Sarebbe davvero molto fortunato se un semplice cropping risolvesse i suoi poblemi. Nel caso più generale, per sapere *dove* croppare dovrebbe appunto sapere fin dove arriva il soggetto dell'immagine... e si morderebbe la coda.