*   >> läser Utbildning artiklar >> science >> programming

Filtrering Connected Components

I en annan artikel som vi lärt oss att utvinna anslutna komponenter med hjälp av OpenCV och hur man till några vanliga verksamheten. Nu ska jag tala om en annan användbar och gemensamma uppgift: att filtrera anslutna komponenter till extraktion av enbart de som passerar en vissa kriterier. Och för att göra saker mer generisk, kommer de kriterier definieras av den som ringer med funktions pekare. Revisiting OpenCVOpenCV är en cool datorseende och bildbehandling bibliotek som är allmänt använd och erbjuder många bra funktioner.

Vi kommer att använda den för att extrahera och filtrera de anslutna komponenterna från en bild. Revisiting ansluten extraktion Komponent Vi kan extrahera de anslutna komponenterna i en bild med cvFindContours fungerar som beskrivs här. Den lagrar konturerna av de anslutna komponenterna i en lista med sekvenser. Varje sekvens innehåller punkterna i en polygon som approximerar att kontur och vi kan navigera denna lista av sekvenser med hjälp av h_next, h_prev, v_next och v_prev pekare.

CvSeq: sekvenser i OpenCV The CvSeq typ är en sekvens i OpenCV och det används för att lagra konturerna av de anslutna komponenterna. Eftersom vi kommer att filtrera de anslutna komponenterna, så behöver vi ett sätt att ta bort en kontur från listan. Den cvSeqRemove Funktionen tar bort element från en sekvens, men det tar inte bort en hel sekvens från vår kontur listan. För att ta bort en sekvens från listan måste vi bråka med de h_next och h_prev pekare. Om vi ​​vill ta bort det första elementet vi behöver bara göra konturerna pekaren pekar på det andra elementet.

För att ta bort ett element i mitten av listan vi "hoppa" honom från sekvensen. Proceduren är enkel och smart: om vi vill ta bort X Omdömen elementet vi gör h_next pekaren av föregående element punkten till en efter X och sälja den h_prev av nästa element punkten till elementet innan X Omdömen.

Precis så här:

  ptr-> h_prev-> h_next = ptr-> h_next; if (ptr-> h_next = NULL!) ptr-> h_next-> h_prev = ptr-> h_prev; 

Naturligtvis måste vi kontrollera om X Omdömen har någon efter honom, så vi inte stöter på några Segmente Fel Omdömen ta bort det sista elementet. Definiera en anpassade kriterier funktion med funktions pekare att göra filterkriterier generiska vi kommer att använda funktionen pekare. Tanken är att lämna in en kontur till ett kriterium funktion som accepterar eller avvisar en kontur.

Om konturen avvisas då vi bort den från vår lista

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.