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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值