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            //小数位数
)	

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值