9
votes

Zone d'intersection de 2 polygones à OpenCV

J'ai les contours de 2 polygones (comme vecteur de CV :: Points2D).

Je voudrais calculer la zone d'intersection entre eux

Quel est le moyen le plus simple de l'obtenir?

Merci beaucoup!

ron


0 commentaires

3 Réponses :


3
votes

La méthode la plus facile à coder va comme ceci: xxx


3 commentaires

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.



2
votes

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);


0 commentaires

12
votes

Dessinez les formes avec cv_filled dans deux images et et elles. La zone est la suivante: CountNonzero (Bitwise_and (ShapeAimage, Shapebimage)) .


0 commentaires