*   >> Læs Uddannelse artikler >> science >> programming

Filtrering Connected Components

I en anden artikel lærte vi, hvordan at udtrække tilsluttede komponenter ved hjælp af OpenCV og hvordan man til nogle almindelige operationer. Nu vil jeg tale om en anden nyttig og fælles opgave: filtrering tilsluttede komponenter kun at udvinde dem, der passerer en række kriterier. Og for at gøre tingene mere generisk, vil de kriterier, der skal defineres af den, der ringer hjælp funktionspointere. Evaluering OpenCVOpenCV er en cool computer vision og billedbehandling bibliotek, som er meget udbredt og byder på mange gode funktioner.

Vi vil bruge det til at udtrække og filtrere de tilsluttede komponenter fra et billede. Evaluering tilsluttet komponent udvinding Vi kan udtrække de tilsluttede komponenter i et billede ved hjælp af cvFindContours funktion som beskrevet her. Den gemmer konturerne af de tilsluttede komponenter på en liste over sekvenser. Hver sekvens indeholder de punkter af en polygon, der tilnærmer at kontur, og vi kan navigere denne liste over sekvenser ved hjælp af h_next, h_prev, v_next og v_prev pointere.

CvSeq: Sekvenser i OpenCV The CvSeq type er en sekvens i OpenCV og det bruges til at lagre konturer tilsluttede komponenter. Da vi vil filtrere de tilsluttede komponenter, så vi har brug for en måde at slette en kontur på listen. Den cvSeqRemove Funktionen fjerner elementer fra en sekvens, men det fjerner ikke en hel sekvens fra vores kontur listen. Hvis du vil fjerne en sekvens fra listen, vi har brug at rode med de h_next og h_prev pointere. Hvis vi ønsker at fjerne det første element, vi bare nødt til at gøre konturerne markøren peger på det andet element.

Hvis du vil fjerne et element i midten af ​​listen, vi "springe" ham fra sekvensen. Proceduren er enkel og smart: Hvis vi ønsker at fjerne X

element, vi gør h_next pointer af det forrige element peger på en efter X

og h_prev af det næste element punkt til elementet før X

.

Ligesom dette:

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

Selvfølgelig er vi nødt til at tjekke, om X

har nogen efter ham, så vi ikke løber ind i nogle Segmentering Fejl

fjerne det sidste element. Definition af en tilpassede kriterier funktion ved hjælp funktionspointere For at gøre filtreringskriterier generiske vi vil bruge funktionen pointere. Ideen er at indsende en kontur til en kriterierne funktion, der accepterer eller afviser en kontur.

Hvis konturen afvises så fjern

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.