Kodning exempel: filtrering och utvinna de anslutna komponenterna Omdömen
Nu ska vi koda den funktion som kommer att göra jobbet . Jag kommer lägga upp funktionens koden nedan här, hela arbetskoden är tillgänglig i slutet av artikeln.
(0); cvFindContours (img, mem, och konturer, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint (0,0)); PTR = konturer; while (ptr = NULL!) {if (kriterier (ptr) == 0) {if (PTR == konturer) {konturer = ptr-> h_next; PTR = konturer; ptr-> h_prev = NULL; } Else {ptr-> h_prev-> h_next = ptr-> h_next; if (ptr-> h_next = NULL!) ptr-> h_next-> h_prev = ptr-> h_prev; PTR = ptr-> h_next; }} Else {PTR = ptr-> h_next, }} tillbaka konturer, } Omdömen Ett exempel på användning I det här exemplet jag ska visa en enkel funktion som filtrerar komponenter baserade på deras förhållande , bara få anslutna komponenter som är nästan kvadratisk. Vi kallar extract_and_filter_CC funktionen så här: filtered_cc = extract_and_filter_CC (img, square), Slutsats I den här artikeln beskriver en annan tillämpning av anslutna komponenter: att filtrera delar av bilden som inte passar in i en vissa kriterier. Den använder också funktions tips för att göra filtreringen som generisk som möjligt. Denna teknik är mycket kraftfull och kan användas tillsammans med andra tekniker för att ta bort brus en bild eller för att extrahera speciellla delar av bilden. Den fullständiga fungerande kod med kommentarer finns här. NET - C # - Använda UserControls Mail Templates CvSeq * extract_and_filter_CC (IplImage * img, int (* kriterier ) (CvSeq *)) {Omdömen Omdömen CvSeq * konturer, * ptr; CvMemStorage * mem = cvCreateMemStorage
int square (CvSeq * kontur) {CvRect box = cvBoundingBox (kontur); if (box-> w /box-> hw /box-> h> 0,4) avkastning 1; återvända 0;} Omdömen
OpenCV Tutorial