2011-10-29 15 views
5

Voglio rilevare una determinata forma in una foto utilizzando PHP. Dai un'occhiata alla seguente foto della mia ragazza.riconoscimento forma php in immagini

My girlfriend

Questa foto ha un paio di angoli neri in esso. Vorrei rilevare quegli angoli e tagliare ciò che è di lato. (Come nell'esempio sopra).

Mi piacerebbe farlo in PHP senza l'utilizzo di alcuna libreria di terze parti.

Qualche idea su come eseguire questa operazione e quali algoritmi posso utilizzare per rilevare forme (di base?) Del genere?

+1

Vuoi riconoscere solo volti o ...? –

+0

Quello che potresti provare è scansionare ogni pixel dell'immagine e usare le aree nere (preferibilmente 1x1 px ciascuna) come marker, come: Scan -> Primo marker, cioè l'angolo in alto a sinistra -> Continua la scansione -> Marcatore successivo, questo è l'angolo in alto a destra. Da lì si scansiona solo l'immagine all'interno di queste due coordinate verso il basso fino a quando non si termina all'ultimo marcatore nell'angolo in basso a sinistra. Dato che hai già le coordinate, fai qualche calcolo di base per capire le proporzioni dell'immagine. Da lì potresti semplicemente ritagliare l'immagine della tua ragazza falsa e assegnarle un nuovo nome. – Seralize

+0

@Alix No, può essere qualsiasi cosa. Ho solo bisogno di rilevare i marcatori (gli angoli neri) e ottenere ciò che è sempre all'interno di quei segnalini. In questo caso è una faccia, ma potrebbe essere un'immagine di qualsiasi cosa. Non riesco a utilizzare i marcatori 1px, perché alla fine ho bisogno di rilevare questo da un'immagine scattata con una fotocamera del telefono o una webcam. Ecco perché il riconoscimento della forma è importante. – w00

risposta

5

Sarebbe facile anche se potrebbe richiedere un'elaborazione intensiva sul lato server.

  1. Il riconoscimento del motivo e il modello di base.
  2. Inoltre abbiamo quattro diverse forme da rilevare.
  3. Considerando il colore solido e predefinito.
  4. Considerando che le forme avranno dimensioni costanti.

Esso può essere ottenuto mediante

  1. lettura tutti pixel uno per uno da alto a sinistra per nell'angolo inferiore destro dell'immagine.
  2. Costruire la prima (in alto a sinistra) e la seconda (in alto a destra) confrontando i pixel rilevati del colore predefinito con le dimensioni predefinite delle forme rispettivamente.
  3. Stessi passaggi per la terza e quarta forma.
  4. Ora se vengono rilevate tutte e quattro le forme o tutte e due (in alto a sinistra e in basso a destra) o (in alto a destra e in basso a sinistra), è possibile ritagliare l'immagine richiesta.

La mia risposta è vaga ma l'unica vera risposta è il codice.

Problemi correlati