前言
通过以下两篇博客可以学习到在图像上绘制文字的方法
OPenCV基础教程——绘制文字
https://blog.csdn.net/Gary_ghw/article/details/103746662
https://blog.csdn.net/Gary_ghw/article/details/103746709
但在实际应用中,还会遇到在图像绘制图像的任务,OpenCV提供了相应的函数便于实现
在此,我们将学习cv::line(), cv::rectangle(),cv::circle(),cv::ellipse(),cv::polylines()函数
1、绘制直线类【cv::line】
void cv::line(
CV_IN_OUT Mat& img, // 输入输出图像
Point pt1, // 直线起点坐标
Point pt2, // 直线终点坐标
const Scalar& color, // 直线颜色
int thickness=1, // 直线宽度,有默认值1
int lineType=8, // 直线类型,默认值为8
int shift=0 // 直线的精度,默认为0
);
2、绘制矩形【cv::rectangle】
void cv::rectangle(
CV_IN_OUT Mat& img,
Point pt1, // 矩形的左上顶点坐标
Point pt2, // 矩形的右下顶点坐标
const Scalar& color,
int thickness=1, // 当thickness=-1时表示填充矩形
int lineType=8,
int shift=0
);
// draws the rectangle outline or a solid rectangle covering rec in the image
void cv::rectangle(
CV_IN_OUT Mat& img,
Rect rec, // 使用rec函数指定矩形起始点和长宽信息
const Scalar& color,
int thickness=1,
int lineType=8,
int shift=0
);
可以看出其有两种参数传入方式:
一类是用Point类指定点,另一类是用Rect函数指定矩形起始点、长、宽
3、绘制圆【cv::circle】
void cv::circle(
CV_IN_OUT Mat& img,
Point center, // 圆心坐标
int radius, // 半径大小
const Scalar& color,
int thickness=1,
int lineType=8,
int shift=0
);
4、绘制椭圆【cv::ellipse】
void cv::ellipse(
CV_IN_OUT Mat& img,
Point center, // 椭圆中心坐标
Size axes, // 椭圆的尺寸 即长短轴
double angle, // 椭圆长轴偏离角度(顺时针)
double startAngle, // 绘制椭圆起始角度(顺时针)
double endAngle, // 绘制椭圆终点角度 若startAngle为0 && endAngle为360,则表示整个椭圆
const Scalar& color,
int thickness=1,
int lineType=8,
int shift=0
);
5、绘制折线多边形【cv::polylines】
void cv::polylines(
Mat& img,
const Point** pts, // 多边形顶点坐标数组
const int* npts, // 多边形顶点个数
int ncontours, // 待绘制折线数
bool isClosed, // 多边形是否闭合(折线是否相连)
const Scalar& color,
int lineType=8,
int shift=0
);
void cv::polylines(
InputOutputArray img,
InputArrayOfArrays pts, // 多边形顶点数组
bool isClosed, // 多边形是否闭合(折线是否相连)
const Scalar& color,
int lineType=8,
int shift=0
);
可以看出其有两种参数传入方式:
一类是用Point类指定指针点,另一类是用数组存多边形的顶点信息