J'ai les contours de 2 polygones (comme vecteur de CV :: Points2D). P>
Je voudrais calculer la zone d'intersection entre eux P>
Quel est le moyen le plus simple de l'obtenir? p>
Merci beaucoup! P>
ron p>
3 Réponses :
La méthode la plus facile à coder va comme ceci:
Malheureusement, cela ne m'aidera pas parce que j'ai besoin d'être plus précis, puis d'utiliser une boîte à bornes ... Les polygones peuvent être dans des formes bizarres (la forme L par exemple) et la boîte de réception ne peut tout simplement pas gérer ces cas. Merci quand même!
C'est précis. La boîte à bornes est utilisée comme optimisation pour réduire le nombre de pixels testés pour être à l'intérieur des deux polygones. Techniquement, vous pouvez faire chaque "X" et chaque "Y" dans l'image, et cela produirait les mêmes résultats.
Cette solution serait très lente.
Vous pouvez trouver l'intersection Polygone WTH Library CLIPPER
//create clipper polygons from your points c.AddPolygons(subj, ptSubject); c.AddPolygons(clip, ptClip); c.Execute(ctIntersection, solution, pftNonZero, pftNonZero);
Dessinez les formes avec cv_filled code> dans deux images et et elles. La zone est la suivante: CountNonzero (Bitwise_and (ShapeAimage, Shapebimage)) Code>. P>