opencv3.2.0之绘图

//描述:包含程序所使用的头文件和命名空间
#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;
}

注意:在编写函数时必须注意把函数写在主函数上,才能正确调用。

原文地址:https://www.cnblogs.com/alpqmz/p/7502770.html