La triangulation de Delaunay opencv c++

J'ai fait une triangulation de delaunay avec openCv grâce à ce code :
exemple de code
(en partiluclar draw_subdiv).
Cependant, lorsque je veux afficher la triangulation, j'ai le maillage et les lignes qui n'appartiennent pas à la triangulation.Ces lignes sont dues au fait que l'algorithme de triangulation commence son travail compte tenu de triangles affichés à "l'infini".

Pouvez-vous m'expliquer comment dessiner le maillage dans l'enveloppe convexe s'il vous plaît (sans ces lignes) ?

fonction d'affichage :

 void draw_subdiv(Mat &img, Subdiv2D& subdiv, Scalar delaunay_color)
{

  vector<Vec6f> triangleList;
  subdiv.getTriangleList(triangleList);
  vector<Point> pt(3);

  for(size_t i = 0; i < triangleList.size(); ++i)
    {
      Vec6f t = triangleList[i];

      pt[0] = Point(cvRound(t[0]), cvRound(t[1]));
      pt[1] = Point(cvRound(t[2]), cvRound(t[3]));
      pt[2] = Point(cvRound(t[4]), cvRound(t[5]));

      line(img, pt[0], pt[1], delaunay_color, 1);
      line(img, pt[1], pt[2], delaunay_color, 1);
      line(img, pt[2], pt[0], delaunay_color, 1);
    }
}

fonction principale :

Mat image = imread(argv[1], 1);

 ..... ....
 //creat delaunay                                                                                                                                 
 Scalar delaunay_color(255, 255, 255), point_color(0,0,255);
 Rect rect(0,0,image.cols, image.rows);

  Subdiv2D subdiv(rect);

 for(int i = 0; i < point.getDim(); ++i)
    {
      Point2f fp(point.getCoord()[i].real(), point.getCoord()[i].imag());
      subdiv.insert(fp);
    }

 draw_subdiv(image, subdiv, delaunay_color);
 imwrite("data/delaunay.jpg", image);

Résultat:

La triangulation de Delaunay opencv c++

poste votre fonction d'affichage, pls.

OriginalL'auteur axel | 2013-05-17