*   >> Lese Utdanning Artikler >> science >> programming

Filtrering Koblet Components

n. Du kan lære mer om funksjonspekere her. Prototypen av kriteriene funksjonen vil være: int kriterier (CvSeq * kontur);

Coding eksempelet: filtrering og trekke de tilkoblede komponentene

Nå vil vi kode funksjon som vil gjøre jobben . Jeg skal legge inn funksjonens koden under her, hele arbeidskoden er tilgjengelig på slutten av artikkelen.


  CvSeq * extract_and_filter_CC (IplImage * img, int (* kriterier ) (CvSeq *)) {


CvSeq * konturer, * ptr; CvMemStorage * mem = cvCreateMemStorage

(0);

cvFindContours (img, mem, og 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) {konturene = 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;

}} returnere konturer; }

Et eksempel på bruk I dette eksempelet vil jeg vise en enkel funksjon som filtrerer komponenter basert på deres forhold , får bare koblet komponenter som er nesten kvadratisk.


  int square (CvSeq * kontur) {CvRect boks = cvBoundingBox (kontur); if (boks-> w /boks-> hw /boks-> h> 0,4) retur 1; returnere 0;} 


Vi kaller extract_and_filter_CC funksjon som dette: filtered_cc = extract_and_filter_CC (img, firkantet);

Konklusjon Denne artikkelen beskriver en annen anvendelse av tilkoblede komponentene: å filtrere deler av bildet som ikke passer i noen visse kriterier. Den bruker også funksjonspekere for å gjøre filtrering som generisk som mulig.

Denne teknikken er meget kraftig, og kan brukes i forbindelse med andre teknikker for å fjerne støy et bilde eller for å trekke ut especial deler av bildet. Den komplette arbeids kode med kommentarer finner du her.

Page   <<  [1] [2] 
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.