//描述:包含程序所使用的头文件和命名空间
#include <opencv2/opencv.hpp>#include "opencv2/core/core.hpp"#include "highgui.h"#include "opencv2/imgproc/imgproc.hpp" using namespace cv;using namespace std;//宏定义部分#define WINDOW_NAME1 "[绘制图1]"#define WINDOW_NAME2 "[绘制图2]"#define WINDOW_WIDTH 600//绘制椭圆,代码分析:把图画在img上,在椭圆中心为(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),并且大小位于矩形(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16)内。旋转角度为angle,扩展的弧度为0到360度。默认染色是蓝色,线宽为2,线性为9
void DrawEllipse(Mat img, double angle) { int thickness = 2; int lineType = 8; ellipse(img, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2), Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16), angle, 0, 360, Scalar(255, 129, 0), thickness, lineType);}//绘制实心圆,把图画在img上,圆中心为WINDOW_WIDTH / 32,Scalar(0, 0, 255)颜色为红色,线宽为2,线性为9
void DrawFilledCircle(Mat img, Point center) { int thickness = -1; int lineType = 8; circle(img, center, WINDOW_WIDTH / 32, Scalar(0, 0, 255), thickness, lineType);}//主函数int main(void) { //创建空白的MAT图像 Mat atomImage = Mat::zeros(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3); Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3); //先绘制出椭圆 DrawEllipse( atomImage,90); DrawEllipse(atomImage, 0); DrawEllipse(atomImage, 45); DrawEllipse(atomImage, -45); //再绘制圆心 DrawFilledCircle(atomImage,Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2)); //显示图像 imshow(WINDOW_NAME1,atomImage); cvMoveWindow(WINDOW_NAME1,0,200); /*imshow(WINDOW_NAME2, rookImage); cvMoveWindow(WINDOW_NAME2, WINDOW_WIDTH, 200);*/ waitKey(0); return 0;}注意:在编写函数时必须注意把函数写在主函数上,才能正确调用。