介绍
这期内容当中小编将会给大家带来有关使用OpenCV怎么绘制一个正多边形,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
具体内容如下
# include & lt; iostream>, # include & lt; opencv2 \ \ core.hpp>核心; # include & lt; opencv2 \ opencv.hpp>, # include & lt; opencv2 \ highgui \ highgui.hpp>, # include & lt; opencv2 \ contrib \ contrib.hpp>, , # include & lt; fstream>, , using namespace 简历; using namespace 性传播疾病; , void DeleteRepetition (vector,,数据) { ,vector ,点,,int 填满) { ,DeleteRepetition(点); ,if (fill ==, 1) ,{ ,Point * ImgDot =, new 点(Dots.size ()); ,for (int 小姐:=,0;,小姐:& lt;, Dots.size();,我+ +),{ ,ImgDot[我],=,点[我]; ,} 点,const  *, ppt =, ImgDot; ,int npt =, Dots.size (); ,RNG 及RNG =, theRNG (); ,Scalar color =,标量(rng.uniform (100,, 255), rng.uniform (100,, 255), rng.uniform (100,, 255)); ,简历::fillPoly (* src,,, ppt,,,不扩散核武器条约》,,1,,颜色); ,} 其他的, ,{ ,Dots.push_back(点[0]); ,RNG 及RNG =, theRNG (); ,Scalar color =,标量(rng.uniform (100,, 255), rng.uniform (100,, 255), rng.uniform (100,, 255)); ,for (int 小姐:=,0;,小姐:& lt;, Dots.size(),安康;1;,我+ +) ,{ ,行(* src,,点(我),点(小姐:+,- 1),颜色,填充); ,} ,} } ,//https://www.w3cplus.com/canvas/drawing-regular-polygons.html//http://www.cnblogs.com/xcywt/p/9456526.html//,图像,中心点,半径,边数,旋转角度,线宽 void EquilateralPolygon (Mat * src, Point 起源、,int 半径,,int 边缘,,int 旋转,,int 填满) { ,if (brim & lt;, 3),返回; ,if (rotate 祝辞,360),返回; , # define PI 3.14159265 # define ROTATE_COUNT 180年 , 360年,double nAgree =,,/,边缘;,//,计算旋转角度 ,double a =, radius *,因为(时间/PI 边缘);,,//,计算垂直向下的长度 ,double s =, 2, *, radius *,罪(时间/PI 边缘);,//,计算边长 , ,vector 点; ,Point D1, D2;=,,D1.x  origin.x , +, * cos半径(-(((180年,安康;nAgree),/, 2), +,旋转),*,PI /, 180);=,,D1.y  origin.y 作用;半径*罪(-(((180年,安康;nAgree),/, 2), +,旋转),*,PI /, 180);=,,D2.x  origin.x , +, * cos半径(-(((180年,安康;nAgree),/, 2), +, nAgree +,旋转),*,PI /, 180);=,,D2.y  origin.y 作用;半径*罪(-(((180年,安康;nAgree),/, 2), +, nAgree +,旋转),*,PI /, 180); , ,//第一条边的两个点 ,Dots.push_back (D1); ,Dots.push_back (D2); , ,for (int 小姐:=,0;,小姐:& lt;, brim 作用;2;,我+ +) ,{ 罪,double dSinRot =, ((nAgree *,(小姐:+,- 1)),*,PI /, 180); ,double dCosRot =, cos ((nAgree *,(小姐:+,- 1)),*,PI /, 180); ,int x =, origin.x +, dCosRot *, (D2.x 作用;origin.x),安康;dSinRot *, (D2.y 作用;origin.y); ,int y =, origin.y +, dSinRot *, (D2.x 作用;origin.x), +, dCosRot *, (D2.y 作用;origin.y); ,Dots.push_back(点(x, y)); ,} ,模式(src,点,,填); ,Dots.clear (); } , int main () { , ,Mat Img =,垫::0 (800,,800,,CV_8UC3); ,Point O =,点(400,,400); , ,圆(Img,,啊,,2,,标量(0,0,255),,1),,//中心点 , ,EquilateralPolygon(和Img,,啊,,100,,3,,0,1),,//,填充的正三角形 ,EquilateralPolygon(和Img,,啊,,200,,3,,0,1),,//,不填充的正三角形 ,EquilateralPolygon(和Img,,啊,,200,,3,,30日,1),,//,不填充的正三角形,顺时针旋转30度 ,EquilateralPolygon(和Img,,啊,,200,,,,,,1),,//,不填充的正三角形,顺时针旋转60度 null null null null null null null null null null null null null null null null null 使用OpenCV怎么绘制一个正多边形