2017-07-09 2 views
0

ce que je suis en train de faire est d'obtenir un tangential quadrilateral de 4 points à l'aide OpenCv.Déterminer une « quadrangulaire tangentielle » de 4 points dans OpenCV

Je suis essayé une approche où je prends juste le centre des quatre points et en ajoutant un cercle. Mais ce n'est pas toujours vrai. En outre, il est très difficile de déterminer le rayon du cercle.

Peu de temps: Un quadrilatère tangentiel est un cercle qui se trouve complètement à l'intérieur d'un carré. .: par exemple

enter image description here

Source: https://commons.wikimedia.org/wiki/File:Tangentenviereck.svg CC BY-SA 4.0

Est-il possible dans OpenCV pour cela?

+1

"le quadrilatère est un cercle" - HUH? On dirait que vous avez quelque peu mélangé la définition. La chose noire est un quadrilatère, la chose bleue un cercle (dans ce cas un cercle). | Cela dit, vous devriez probablement élaborer sur ce que dans l'image vous savez, et ce que vous essayez de calculer. (Je suppose que vous connaissez 'A B C D' et que vous voulez trouver' M' et 'r') –

Répondre

2

Si vous avez 4 points A, B, C, D, vous avez certainement déjà quadrilatéral (polygone à quatre côtés).

Il n'est pas garanti que cette tangente est tangentielle - il est vrai que si les sommes de longueurs latérales opposées sont égales.

Si vous avez vraiment des sommets de tangentielle tangentielle - longueur trouver des côtés a, b, c, d et diagonales p, q et obtenez un rayon de incircle as

r = Sqrt(4*p^2*q^2-(a^2-b^2+c^2-d^2)^2))/(2*(a+b+c+d)) 

Il y a beaucoup de formules pour le centre incircle à la page wiki, mais j'utiliserais l'approche trigonométrique - obtenir le vecteur bissecteur de l'angle A comme somme des vecteurs normalisés AB et AD, le normaliser, multiplier par longueur | AM | = r/tg (A/2) et ajouter le vecteur résultant A.

Notez que OpenCV est une bibliothèque de traitement d'image, pas pour les calculs géométriques.