*   >> Lecture Éducation Articles >> science >> la programmation

Filtrage Connecté Components

pointeurs de fonction pour effectuer les critères de filtrage génériques, nous allons utiliser des pointeurs de fonction. L'idée est de présenter un contour à une fonction de critères qui accepte ou rejette un contour. Si le contour est rejeté alors nous retirerons de notre liste de contours. En fin de compte que les contours acceptés resteront et nous le retourner. Vous pouvez en apprendre plus sur les pointeurs de fonction ici.

Le prototype de la fonction de critères sera: critères de int (de CvSeq * de contour);

Coding l'exemple: le filtrage et l'extraction des composantes connexes

Maintenant, nous allons coder la fonction qui va faire le travail . Je vais poster le code de la fonction ci-dessous ici, le code de travail complet est disponible à la fin de l'article.


  CvSeq * extract_and_filter_CC (IplImage * img, int (* critères ) (CvSeq *)) {

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

(0);

cvFindContours (img, MEM, et contours, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint (0,0)); ptr = contours; while (ptr! = NULL) {if (critères (PTR) == 0) {if (PTR == contours) {contours = ptr-> h_next; ptr = contours; ptr-> h_prev = NULL; } Else {ptr-> h_prev-> h_next = ptr-> h_next; si (ptr-> h_next! = NULL) ptr-> h_next-> h_prev = ptr-> h_prev; ptr = ptr-> h_next; }} Else {ptr = ptr-> h_next;

}} retourner contours; }

Un exemple d'utilisation Dans cet exemple, je vais vous montrer une fonction simple qui filtre les composants en fonction de leur rapport , se uniquement les composants qui sont presque carré connecté.


  int carré (CvSeq * contour) {case CvRect = cvBoundingBox (contour); si (box-> w /box-> hw /box-> h> 0,4) return 1; return 0;} 


Nous appelons la fonction extract_and_filter_CC comme ceci: filtered_cc = extract_and_filter_CC (img, carré);

Conclusion Cet article décrit un autre application des composantes connexes: pour filtrer les parties de l'image qui ne correspond pas à certains critères. Il utilise également des pointeurs de fonction pour rendre le filtrage aussi générique que possible.

Cette technique est très puissante et peut être utilisée conjointement à d'autres techniques pour éliminer le bruit d'une image ou d'extraire especial parties de l'image. Le code de travail complet avec des commentaires est disponible ici.

Page   <<  [1] [2] 
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.