在图像处理的过程中,我们有时需要在图像或者视频上画上一些图案或者绘上一些文字。OpenCV中提供了各种功能的绘图函数,使用这些函数,我们可以在图像上绘制直线、矩形、圆、椭圆、多边形等等。

1、cv::circle()

cv::circle()是OpenCV在图像上绘制圆的函数,调用形式如下:

 void circle(cv::Mat& img, // 待绘制的图像cv::Point center, // 圆心位置int radius, // 圆的半径const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

2、cv::clipLine()

cv::clipLine()是判断一条直线是否在某个矩形内,有以下两种形式:

 bool clipLine( // 如果直线line任何一部分在矩形 'imgRect'内,则返回truecv::Rect imgRect, // 要穿过的矩形cv::Point& pt1, // 直线的第一个端点cv::Point& pt2 // 直线的第二个端点);bool clipLine( // 如果直线line任何一部分在图像大小Size内,则返回truecv::Size imgSize, // 图像的大小,相当于矩形的端点在(0,0)cv::Point& pt1, // 直线的第一个端点cv::Point& pt2 // 直线的第二个端点);

3、cv::ellipse()

cv::ellipse()是绘制椭圆和椭圆弧线(部分椭圆)的函数,有以下两种形式:

 bool ellipse(cv::Mat& img, // 待绘制的图像cv::Point center, // 椭圆中心cv::Size axes, // 椭圆长轴和短轴的长度double angle, // 长轴倾角double startAngle, // 弧度绘制的起始角度double endAngle, // 弧度绘制的const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);bool ellipse(cv::Mat& img, // 待绘制的图像const cv::RotatedRect& rect, // 椭圆的外切矩形const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

4、cv::fillConvexPoly()

cv::fillConvexPoly()用于绘制封闭多边形,注意:输入的多边形不能出现交叉,否则会出错。具体形式如下:

 void fillConvexPoly(cv::Mat& img, // 待绘制的图像const cv::Point* pts, // c风格的点序列int npts, // 'pts'中点的数目const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

5、cv::fillPoly()

cv::fillPoly()用于绘制任意数目的封闭多边形。多边形可以出现交叉。具体形式如下:

 void fillPoly(cv::Mat& img, // 待绘制的图像const cv::Point** pts, // c风格的点序列的序列int* npts, // 'pts[i]'中点的数目int ncontours, // 'pts'中的序列数const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0, // 偏移量cv::Point offset = Point() // 整体偏移量);

6、cv::line()

cv::line()用于直线的绘制,具体形式如下:

 void line(cv::Mat& img, // 待绘制的图像cv::Point pt1, // 直线的第一个端点cv::Point pt2 // 直线的第二个端点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

7、cv::rectangle()

cv::rectangle()用于矩形的绘制,有以下两种形式:

 void rectangle(cv::Mat& img, // 待绘制的图像cv::Point pt1, // 矩形的第一个顶点cv::Point pt2 // 矩形的对角顶点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);void rectangle(cv::Mat& img, // 待绘制的图像cv::Rect r, // 待绘制的矩形const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

8、cv::polyLines()

cv::polyLines()用于绘制非封闭多边形(即折线),具体形式如下:

 void polyLines(cv::Mat& img, // 待绘制的图像const cv::Point** pts, // c风格的点序列的序列int* npts, // 'pts[i]'中点的数目int ncontours, // 'pts'中的序列数bool isClosed, // 如果是true, 则连接首尾两点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

2017.03.30

【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制相关推荐

  1. SVG基本使用(一、基本概念、使用方法、绘制矩形/圆/椭圆/直线/折现/多边形/)

    一.SVG概念 1.什么是SVG? SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图 2.位图和矢量图 在计算机中有两种图形, 一种是位图, 一种是矢量图 2.1 ...

  2. opencv 基本绘图功能 画直线 画圆 给图像添加文字等

    直线 矩形 圆 椭圆 多边形 多条直线 图像上写文字 实验 import cv2 as cv import numpy as np# 创建一副黑色的图片 img = np.zeros((512, 51 ...

  3. OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字

    OpenCV在图像上随机画直线.椭圆.多边形.圆.显示文字 代码如下: /*** @file Drawing_2.cpp* @brief Simple sample code*/#include &l ...

  4. 直线与圆位置关系的c语言,直线和圆的位置关系说课稿

    直线和圆的位置关系说课稿 作为一名老师,通常需要用到说课稿来辅助教学,说课稿是进行说课准备的文稿,有着至关重要的作用.写说课稿需要注意哪些格式呢?以下是小编收集整理的直线和圆的位置关系说课稿,仅供参考 ...

  5. Win32绘图总结篇(点、直线、折线、贝塞尔曲线、矩形、椭圆、圆弧、弓形、扇形、多边形等)

    前言: 想在窗口上绘制出各种各样的图形,Windows给我们提供了大量的API函数,这些绘图函数种类很多,基本上能满足我们的绘图需求.要绘制出漂亮的图形,这时需要用到画笔和画刷了,简单来说,画笔是用来 ...

  6. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)

    使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...

  7. OpenCV与图像处理学习三——线段、矩形、圆、椭圆、多边形的绘制以及文字的添加

    OpenCV与图像处理学习三--线段.矩形.圆.椭圆.多边形的绘制以及文字的添加 一.OpenCV中的绘图函数 1.1 线段绘制 1.2 矩形绘制 1.3 圆绘制 1.4 椭圆的绘制 1.5 多边形绘 ...

  8. 【sketchup 2021】草图大师的基础使用【矩形与橡皮擦、直线与圆、手绘线与多边形、圆形与扇形、推拉工具】

    文章目录 矩形与橡皮擦 矩形普通使用 矩形进阶使用[画立面和分割面] 擦除 连续擦除 选中后不想删除了... 隐藏/显示边线 柔化边线/取消柔化 另一种擦除:删除 直线与圆 直线工具 鼠标绘制 默认绘 ...

  9. 《15天玩转WPF》—— 直线、矩形、椭圆的各种画法

    时间:2020.4.2,<深入浅出WPF>也学到了最后一章,三百页用了将近一个月 (3.14开始) 属实有点慢,因为有个人的一些事情. . . 前面的一些文章都是举出书中核心的知识,有点枯 ...

  10. Java画布:直线三角形,矩形,椭圆等

    刚刚开始学习做画布,大概模板参照电脑自带的画图软件来写 我们看到,首先是要有一个界面,作为画板: 然后就会有各式各样的按钮,本次主要讲添加形状按钮与换画笔颜色的按钮. 上一个做界面的我们大概都知道了, ...

最新文章

  1. python实现一种检测postgresql数据库是否已经连接且为主节点的办法
  2. C#LeetCode刷题-程序员面试金典
  3. php的setinc方法,thinkphp3.2.0 setInc方法 源码全面解析
  4. 图片相框展示的设计与实现
  5. mysql install and config
  6. 20145235 《Java程序设计》第8周学习总结
  7. java中CheckException和UnCheckException的区别
  8. 配色表 色卡 前段色彩
  9. 使用canvas给页面添加文字水印
  10. Java和C专项练习
  11. C语言链表实现商品库存管理系统
  12. 2018技能高考计算机试题答案,计算机技能高考模拟试题一.doc
  13. 计算机的云是什么意思_网络上所说的云是什么意思?能通俗一点解释吗?
  14. November 24th 周杰伦演唱会
  15. Excel表格汇总计算计算同一人数据
  16. 透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)
  17. actionscript3.0视频教程合集
  18. Zookeeper启动失败,提示:Starting zookeeper ... already running as process
  19. 阿斯利康中国西部总部启用;康华动保(成都)公司成立;博腾生物战略客户集中签约仪式举行 | 医药健闻...
  20. 低显存(4g)训练LoRA模型的一些经验+自训练四季夏目LoRA模型分享

热门文章

  1. 一、【绪论】数据结构的基本概念
  2. Apache ZooKeeper - 集群中 Observer 的作用以及 与 Follow 的区别
  3. Apache ZooKeeper - 使用ZK实现分布式锁(非公平锁/公平锁/共享锁 )
  4. RocketMQ-初体验RocketMQ(10)-过滤消息_SQL92表达式筛选消息
  5. Android’s PreferenceActivity for all API versions
  6. Java语言实现插值查找
  7. 爬虫学习笔记(十一)—— Scrapy框架(六):媒体管道
  8. cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计
  9. think php a方法,PHP_ThinkPHP之A方法实例讲解,ThinkPHP的A方法用于在内部实例 - phpStudy...
  10. matlab api接口调用json格式