一、函数
ellipse
函数:
(1)函数原型:
CV_EXPORTS_W void ellipse(InputOutputArray img, Point center, Size axes,
double angle, double startAngle, double endAngle, const Scalar& color,
int thickness = 1, int lineType = LINE_8, int shift = 0);
(2)函数作用:
ellipse
函数可以绘制椭圆轮廓、填充椭圆、椭圆弧或填充的椭圆扇区。使用一般参数形式的绘制代码。
(3)椭圆参数化表示:
- 椭圆的绘制使用参数化形式,椭圆弧的边界使用分段线性曲线近似。
(4)绘制控制:
- 如果需要更多控制椭圆渲染,可以使用
ellipse2Poly
函数检索曲线,然后使用polylines
或fillPoly
进行绘制或填充。
(5)绘制整个椭圆:
- 如果使用函数的第一个变体并且想要绘制整个椭圆,而不是弧,传递
startAngle=0
和endAngle=360
。
(6)角度处理:
- 如果
startAngle
大于endAngle
,它们将被交换。
(7)参数说明:
img
:要绘制椭圆的图像。center
:椭圆的中心点。axes
:椭圆主轴的一半大小。angle
:椭圆旋转角度,以度为单位。startAngle
:椭圆弧起始角度,以度为单位。endAngle
:椭圆弧结束角度,以度为单位。color
:椭圆的颜色,使用Scalar
类型。thickness
:椭圆弧轮廓的粗细度,如果为正数。如果为负数,则表示要绘制填充的椭圆扇区。lineType
:椭圆边界的类型,见LineTypes
,默认为LINE_8
,表示抗锯齿线条。shift
:中心坐标和轴尺寸值的小数位数。
二、示例代码:
#include <opencv2/core/utils/logger.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);
Mat circle = Mat::zeros(500, 600, CV_8UC3);
double angle = 100;
ellipse(circle, Point(300, 300), Size(100, 200), angle, 0, 300, Scalar(200, 0, 0), -1, LINE_AA);
namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("image", circle);
waitKey(0);
destroyAllWindows();
return 0;
}