OpenCV基础教程——绘图函数【简单易懂】

前言

通过以下两篇博客可以学习到在图像上绘制文字的方法

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类指定指针点,另一类是用数组存多边形的顶点信息

发布了12 篇原创文章 · 获赞 27 · 访问量 781

猜你喜欢

转载自blog.csdn.net/Gary_ghw/article/details/103753115