概述
这个函数就是画一个椭圆。
但是有两种重载。
第一种重载
函数
void cv::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
)
img | 输出对象 |
center | 椭圆的中心点 |
axes | 椭圆的长轴和短轴 |
angle | 椭圆的偏转角度(顺时针偏转) |
startAngle | 椭圆的起始角度 |
endAngle | 椭圆的结束角度 |
color | 画笔的颜色 |
thickness | 线宽 |
lineType | 线条的类型 |
shift | 中心坐标和轴值的小数位数 |
测试代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <vector>
using namespace cv;
using namespace std;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//新建图像
cv::Mat mat(500,600,CV_8UC3,Scalar(200,200,200));
//定义椭圆的中心点
cv::Point center(mat.size().width/2,mat.size().height/2);
//定义大小
cv::Size size(200,100);
//定义画笔的颜色
cv::Scalar color1(0,0,255);
cv::Scalar color2(0,255,0);
//绘制椭圆1
cv::ellipse(mat,center,size,20,0,360,color1,2,8);
//绘制椭圆2
cv::ellipse(mat,center,size,20,30,100,color2,2,8);
//显示
imshow("mat",mat);
}
Widget::~Widget()
{
delete ui;
}
测试结果
第二种重载
函数
void cv::ellipse
(
InputOutputArray img,
const RotatedRect & box,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8
)
img | 输出对象 |
box | 旋转矩形包含椭圆的属性 |
color | 颜色 |
thickness | 线宽 |
lineType | 线条类型 |
测试代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <vector>
using namespace cv;
using namespace std;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//新建图像
cv::Mat mat(500,600,CV_8UC3,Scalar(200,200,200));
//定义中心点
cv::Point center(mat.size().width/2,mat.size().height/2);
//定义大小
cv::Size size(200,100);
cv::RotatedRect box(center,size,30);
//定义画笔的颜色
cv::Scalar color(0,0,255);
//绘制椭圆
cv::ellipse(mat,box,color,2,8);
//显示
imshow("mat",mat);
}
Widget::~Widget()
{
delete ui;
}