2016-10-10 2 views
0

bestimmt Ich habe drei Punkte, sagen wir C als einen Mittelpunkt, während P1 und P2 zwei andere Punkte sind. Ich habe berechnet Winkel zwischen C und P1 wissen, wie Winkel1 und p2 c genannt Winkel 2. hier ist der Code, den ich es zu berechnen, verwendenWie man den Rotationswinkel der Ellipse und den Füllbereich zwischen Punkten in opencv, C++

angle1 = atan2(p1.y - c.y, p1.x - c.x); 
angle2 = atan2(p2.y - c.y, p2.x - c.x); 

nach, dass ich sie in Grad änderte sich dies durch die Verwendung.

if (angle1 >= 0) 
     angle1 = angle1 * (180/PI); 
    else 
     angle1 = (angle1 + 2 * PI) * (180/PI); 

    if(angle2 >= 0) 
     angle2 = angle2 * (180/PI); 
    else 
     angle2 = (angle2 + 2 * PI) * (180/PI); 

Dann habe ich diese OpenCV-Methode verwenden um den Bogen zu berechnen ziehen, ist einige Zeit Bogen zwischen zwei Punkt perfekt, während einige Male es den ganzen Kreis andere als die beiden Punkte erfüllt, die ich Bild hier posten.

radius = sqrt(pow(c.x - p1.x, 2.0) + pow(c.y - p1.y, 2.0)); 
ellipse(outPutMat, c, cv::Size(radius, radius), 0, angle1, angle2, Scalar(0, 0, 0), -1, 8, 0); 

hier sind die Bilder enter image description here

enter image description here

roten Punkte sind die Punkte, während schwarze Ellipse Farbe gefüllt ist. Für erste Bild agngle1 = 42,1376 während angle2 = 338,962 Für 2. Bild agngle1 = 152,447 während angle2 = 223,363

2. Bild rechts Ergebnissen geführt, aber zuerst falsch ist. Ich möchte nur den Bereich zwischen den Punkten füllen.

Antwort

1

Nach kurzer Prüfung - es scheint, dass OpenCV-Funktion berechnet Winkel als ma = (angle1 + angle2)/2 und zeichnet Bogen durch diesen Punkt.

Sowohl (-45,45) als auch (45, -45) geben denselben 90-Grad-Bogen durch Null, beide (315,45) und (45,315) ergeben denselben 270-Grad-Bogen.

Um gewünschtes Ergebnis zu erhalten, haben Sie nicht Karte negative Winkel zu positivem Wert ((angle1 + 2 * PI)) und 42 und -21 Werte im ersten Fall verwenden.

+0

Ich habe dieses Problem bereits behoben. Danke für die Antwort. Deine Antwort ist auch richtig. – Mudasar

Verwandte Themen