使用OpenCV怎么绘制一个正多边形

  介绍

这期内容当中小编将会给大家带来有关使用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怎么绘制一个正多边形