Opencv C++ 绘制椭圆/圆形

Opencv C++ 绘制椭圆/圆形

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace cv;
using namespace std;

//绘制椭圆;
void DrawEllipse(Mat img, double angle, int nThickness)
{
	int nWidth = img.cols;
	int nHeight = img.rows;
	int lineType = 8;

	if (nThickness != -1)
		ellipse(img, Point(nWidth / 2, nHeight / 2), Size(nWidth / 4, nWidth / 16), angle, 0, 360, Scalar(255, 129, 0), nThickness, lineType);
	else
		ellipse(img, Point(nWidth / 8, nHeight / 8), Size(nWidth / 16, nWidth / 32), angle, 0, 360, Scalar(255, 129, 0), nThickness, lineType);
}

//绘制圆形
void DrawCircle(Mat img, int radius, int nThickness)
{
	int nWidth = img.cols;
	int nHeight = img.rows;
	int lineType = 8;

	circle(img, Point(nWidth / 2, nHeight / 2), radius, Scalar(255, 129, 0), nThickness, lineType);
}

int main()
{
	//1.创建图片
	Mat imageDraw = Mat::zeros(600, 600, CV_8UC3);

	//2.绘制椭圆形
	for (int i = -90; i < 90; )
	{
		DrawEllipse(imageDraw, i, 2);
		i += 30;
	}
	
	DrawEllipse(imageDraw, 90, -1);
	DrawEllipse(imageDraw, 0, -1);

	//3.绘制圆形
	int nWidth = imageDraw.cols;
	DrawCircle(imageDraw, nWidth/32, -1);
	DrawCircle(imageDraw, nWidth /4 + 5, 1);

	//4.显示图片
	imshow("imageDraw", imageDraw);
	waitKey(0);
	destroyAllWindows();
}

绘制结果
在这里插入图片描述

绘制椭圆


void cv::ellipse	(	
InputOutputArray 	img,  //所绘制的图片
Point 	center,			  //椭圆中心点
Size 	axes,			  //椭圆长短轴
double 	angle,			  //旋转角度(角度)
double 	startAngle,		  //开始绘制角度
double 	endAngle,		  //结束绘制角度
const Scalar & 	color,    //绘制所使用颜色
int 	thickness = 1,	  //线宽  -1 全填充 
int 	lineType = LINE_8, // 线类型 8领域绘制
int 	shift = 0 		   //小数位数
)	

在这里插入图片描述
在这里插入图片描述
//绘制圆形

void cv::circle	(	
InputOutputArray 	img,	//所绘制的图片
Point 	center,				//圆形中心点
int 	radius,             //圆形半径
const Scalar & 	color,		//圆形颜色
int 	thickness = 1,		//线宽  -1 全填充 
int 	lineType = LINE_8,  //线类型 8领域绘制
int 	shift = 0            //小数位数
)	

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章