0
我想知道在OpenCv中是否有方法將給定半徑的circle
轉換爲polygon
(例如五邊形或六邊形或類似的東西)?OpenCv將圓圈轉換爲多邊形
圈是很容易的:
cv::circle(myMat, center_point, radius, colour, 2, 16);
,面也十分方便,:
cv::polylines(myMat, points, isClosed, colour, 2, 16);
我的做法是這樣的:
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);
這是工作,但我想知道是否有更聰明的方法來做到這一點?
好簡單。感謝那 – user1234