0
Ich frage mich, ob es einen Weg in OpenCv gibt, einen circle
mit einem gegebenen Radius zu einem polygon
(z. B. Fünfeck oder Sechseck oder so ähnlich) zu konvertieren?OpenCv konvertiert Kreis zu Polygon
Kreis ist recht einfach:
cv::circle(myMat, center_point, radius, colour, 2, 16);
und Polygon ist einfach wie gut:
cv::polylines(myMat, points, isClosed, colour, 2, 16);
Mein Ansatz ist die folgende:
int length = 150;
Point center_point(500, 500);
Point P1;
P1.x = (int)round(center_point.x + length * cos(0 * CV_PI/180.0));
P1.y = (int)round(center_point.y + length * sin(0 * CV_PI/180.0));
Point P2;
P2.x = (int)round(center_point.x + length * cos(45 * CV_PI/180.0));
P2.y = (int)round(center_point.y + length * sin(45 * CV_PI/180.0));
Point P3;
P3.x = (int)round(center_point.x + length * cos(90 * CV_PI/180.0));
P3.y = (int)round(center_point.y + length * sin(90 * CV_PI/180.0));
Point P4;
P4.x = (int)round(center_point.x + length * cos(135 * CV_PI/180.0));
P4.y = (int)round(center_point.y + length * sin(135 * CV_PI/180.0));
Point P5;
P5.x = (int)round(center_point.x + length * cos(180 * CV_PI/180.0));
P5.y = (int)round(center_point.y + length * sin(180 * CV_PI/180.0));
Point P6;
P6.x = (int)round(center_point.x + length * cos(225 * CV_PI/180.0));
P6.y = (int)round(center_point.y + length * sin(225 * CV_PI/180.0));
Point P7;
P7.x = (int)round(center_point.x + length * cos(270 * CV_PI/180.0));
P7.y = (int)round(center_point.y + length * sin(270 * CV_PI/180.0));
Point P8;
P8.x = (int)round(center_point.x + length * cos(315 * CV_PI/180.0));
P8.y = (int)round(center_point.y + length * sin(315 * CV_PI/180.0));
cv::polylines(myMat, {P1,P2,P3,P4,P5,P6,P7,P8}, isClosed, colour, 2, 16);
, die arbeitet, aber ich war sich fragen, ob es einen schlaueren Weg gibt, es zu tun?
gut so einfach. Dank dafür – user1234