Faire pivoter un point autour d'un point avec OpenCV
Personne ne sait comment je peux faire tourner un point autour de l'autre dans OpenCV?
Je suis à la recherche d'une fonction comme ceci:
Point2f rotatePoint(Point2f p1, Point2f center, float angle)
{
/* MAGIC */
}
source d'informationauteur user1021793
Vous devez vous connecter pour publier un commentaire.
Ce sont les étapes nécessaires pour faire tourner un point autour d'un autre point par un angle alpha:
L'équation standard de rotation est:
x' = xcos(alpha) - ysin(alpha)
y' = xsin(alpha) + ycos(alpha)
Prenons l'exemple de Point(15,5) autour du Point(2,2) par 45 degrés.
Tout d'abord, traduire:
v = (15,5) - (2,2) = (13,3)
Maintenant faire pivoter de 45°:
v = (13*cos 45° - 3*sin 45°, 13*sin 45° + 3*cos 45°) = (7.07.., 11.31..)
Et enfin, de les traduire en arrière:
v = v + (2,2) = (9.07.., 13.31..)
Remarque: les Angles doit être spécifié en radians, afin de multiplier le nombre de degrés par
Pi /180
De point de rotation
p1 = (x1, y1)
autour dep (x0, y0)
par l'anglea
:où
(x2, y2)
est le nouvel emplacement du pointp1
Si vous avez déjà des points sous forme de RotatedRectvous pouvez changer l'angle de tourner les points.
Cela peut aider
J'ai été à la recherche pour la transformation de n'importe quel pixel de coordonnées d'une Image et je pouvais à peine les trouver que sur google. D'une certaine manière, j'ai trouvé un lien de code python qui fonctionne correctement et qui m'a aidé à comprendre le problème:
https://cristianpb.github.io/blog/image-rotation-opencv
Suivant est le correspondant du code C++, si quelqu'un est à la recherche pour elle: