2012-04-30 12 views
8

dopo aver effettuato il rilevamento di spigoli e angoli e quindi trovare contorni, ho questa uscita.Estrai rettangolo da Contour OpenCV

come posso ritagliare l'immagine e tornare solo in questo rettangolo utilizzando OpenCV

EDIT:

ho provato cvBoundingRect e poi setimageROI ma l'immagine di uscita continua ad avere qualche informazione, ma voglio che il rettangolo unico

Grazie.

Image Link

+0

ho provato cvBoundingRect e quindi setimageROI ma l'immagine di output ha ancora qualche sfondo ma voglio solo il rettangolo –

+1

Vuoi l'area del rettangolo e cosa c'è dentro, giusto? – karlphillip

+0

@karlphillip Right :) Grazie –

risposta

6

Spero che serve l'area rettangolare selezionata.

Per questo è necessario creare un'altra immagine in scala di grigio, chiamiamola 'maschera'. Quindi disegna il contorno del rettangolo ottenuto su di esso e riempilo con il bianco (255,255,255). Otterrete un'immagine di questo tipo (tutte le immagini a mano edito nel programma di disegno):

enter image description here

Ora basta avere un bitwise_and operazione su entrambe le immagini. Otterrete risultare come questo:

enter image description here

** NB: ** Ora, se non è quello che si voleva, invece si voleva this kind of selection, è possibile trovare informazioni su di esso in this SOF question (grazie a karl philip per il collegamento).

+0

+1 Approccio interessante, ottimo riferimento: amo quel post. – karlphillip

+1

Suggerisco anche questo post poiché mostra [come deformare l'immagine da un vettore di 'cv :: Point'] (http://stackoverflow.com/questions/7838487/executing-cvwarpperspective-for-a-fake-deskewing -on-a-set-di-cvpoint). – karlphillip

+1

wow. quello era il collegamento che stavo cercando. Grazie!! (modifica la risposta con il link di karl). –

1

Immagino che Mustafa voglia ottenere la scatola automaticamente? In caso contrario, si prega di accettare la risposta di Abid e ignorare questo.

Altrimenti:

Come io non so fino a che punto si deve generalizzare, per questa specifica immagine, fare trasformata di Hough, che vi dà linee rette. Tuttavia la linea in basso può diventare falsamente positiva. Ma con alcuni post-elaborazione, ad es. sfocatura, dilata, sarai in grado di sbarazzartene. O potresti usare la consapevolezza che le linee costruiscono un rettangolo.