#include <iostream>
#include<opencv2/highgui/highgui.hpp>
#include <cv.h>
#define w 400
using namespace std;
using namespace cv;
void MyEllipse(Mat image,double angle)
{
int thickness = 2;
int linetype = 8;
ellipse(image,Point(w/2.0,w/2.0),
Size(w/4.0,w/16.0),
angle,0,360,Scalar(255,0,0),thickness,linetype);
}
void MyFilledCircle(Mat image,Point center)
{
int thickness = -1;
int linetype = 8;
circle(image,center,w/32.0,Scalar(0,0,255),thickness,linetype);
}
void main()
{
cvNamedWindow("Drawing Atom");//window name
Mat atom_image = Mat::zeros(w,w,CV_8UC3);//create black empty image
for (int i = -90;i<=90;i = i+10)
{
MyEllipse(atom_image,i);
}
MyFilledCircle(atom_image,Point(w/2.0,w/2.0));
imshow("Drawing Atom",atom_image);
waitKey(0);
system("pause");
}
分析,该分析参考了http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/basic_geometric_drawing/basic_geometric_drawing.html这篇blog
void MyEllipse(Mat image,double angle)
- 椭圆将被画到图像 img 上
- 椭圆中心为点 (w/2.0, w/2.0) 并且大小位于矩形 (w/4.0, w/16.0) 内
- 椭圆旋转角度为 angle
- 椭圆扩展的弧度从 0 度到 360 度
- 图形颜色为 Scalar( 255, 255, 0) ,既蓝色
- 绘椭圆的线粗为 thickness ,此处是2
void MyFilledCircle(Mat image,Point center)
- 圆将被画到图像 ( img )上
- 圆心由点 center 定义
- 圆的半径为: w/32.0
- 圆的颜色为: Scalar(0, 0, 255) ,按BGR的格式为 红色
- 线粗定义为 thickness = -1, 因此次圆将被填充