【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制
在图像处理的过程中,我们有时需要在图像或者视频上画上一些图案或者绘上一些文字。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】几何图形(直线、矩形、圆、椭圆、多边形等)绘制相关推荐
- SVG基本使用(一、基本概念、使用方法、绘制矩形/圆/椭圆/直线/折现/多边形/)
一.SVG概念 1.什么是SVG? SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图 2.位图和矢量图 在计算机中有两种图形, 一种是位图, 一种是矢量图 2.1 ...
- opencv 基本绘图功能 画直线 画圆 给图像添加文字等
直线 矩形 圆 椭圆 多边形 多条直线 图像上写文字 实验 import cv2 as cv import numpy as np# 创建一副黑色的图片 img = np.zeros((512, 51 ...
- OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字
OpenCV在图像上随机画直线.椭圆.多边形.圆.显示文字 代码如下: /*** @file Drawing_2.cpp* @brief Simple sample code*/#include &l ...
- 直线与圆位置关系的c语言,直线和圆的位置关系说课稿
直线和圆的位置关系说课稿 作为一名老师,通常需要用到说课稿来辅助教学,说课稿是进行说课准备的文稿,有着至关重要的作用.写说课稿需要注意哪些格式呢?以下是小编收集整理的直线和圆的位置关系说课稿,仅供参考 ...
- Win32绘图总结篇(点、直线、折线、贝塞尔曲线、矩形、椭圆、圆弧、弓形、扇形、多边形等)
前言: 想在窗口上绘制出各种各样的图形,Windows给我们提供了大量的API函数,这些绘图函数种类很多,基本上能满足我们的绘图需求.要绘制出漂亮的图形,这时需要用到画笔和画刷了,简单来说,画笔是用来 ...
- 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)
使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...
- OpenCV与图像处理学习三——线段、矩形、圆、椭圆、多边形的绘制以及文字的添加
OpenCV与图像处理学习三--线段.矩形.圆.椭圆.多边形的绘制以及文字的添加 一.OpenCV中的绘图函数 1.1 线段绘制 1.2 矩形绘制 1.3 圆绘制 1.4 椭圆的绘制 1.5 多边形绘 ...
- 【sketchup 2021】草图大师的基础使用【矩形与橡皮擦、直线与圆、手绘线与多边形、圆形与扇形、推拉工具】
文章目录 矩形与橡皮擦 矩形普通使用 矩形进阶使用[画立面和分割面] 擦除 连续擦除 选中后不想删除了... 隐藏/显示边线 柔化边线/取消柔化 另一种擦除:删除 直线与圆 直线工具 鼠标绘制 默认绘 ...
- 《15天玩转WPF》—— 直线、矩形、椭圆的各种画法
时间:2020.4.2,<深入浅出WPF>也学到了最后一章,三百页用了将近一个月 (3.14开始) 属实有点慢,因为有个人的一些事情. . . 前面的一些文章都是举出书中核心的知识,有点枯 ...
- Java画布:直线三角形,矩形,椭圆等
刚刚开始学习做画布,大概模板参照电脑自带的画图软件来写 我们看到,首先是要有一个界面,作为画板: 然后就会有各式各样的按钮,本次主要讲添加形状按钮与换画笔颜色的按钮. 上一个做界面的我们大概都知道了, ...
最新文章
- python实现一种检测postgresql数据库是否已经连接且为主节点的办法
- C#LeetCode刷题-程序员面试金典
- php的setinc方法,thinkphp3.2.0 setInc方法 源码全面解析
- 图片相框展示的设计与实现
- mysql install and config
- 20145235 《Java程序设计》第8周学习总结
- java中CheckException和UnCheckException的区别
- 配色表 色卡 前段色彩
- 使用canvas给页面添加文字水印
- Java和C专项练习
- C语言链表实现商品库存管理系统
- 2018技能高考计算机试题答案,计算机技能高考模拟试题一.doc
- 计算机的云是什么意思_网络上所说的云是什么意思?能通俗一点解释吗?
- November 24th 周杰伦演唱会
- Excel表格汇总计算计算同一人数据
- 透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)
- actionscript3.0视频教程合集
- Zookeeper启动失败,提示:Starting zookeeper ... already running as process
- 阿斯利康中国西部总部启用;康华动保(成都)公司成立;博腾生物战略客户集中签约仪式举行 | 医药健闻...
- 低显存(4g)训练LoRA模型的一些经验+自训练四季夏目LoRA模型分享
热门文章
- 一、【绪论】数据结构的基本概念
- Apache ZooKeeper - 集群中 Observer 的作用以及 与 Follow 的区别
- Apache ZooKeeper - 使用ZK实现分布式锁(非公平锁/公平锁/共享锁 )
- RocketMQ-初体验RocketMQ(10)-过滤消息_SQL92表达式筛选消息
- Android’s PreferenceActivity for all API versions
- Java语言实现插值查找
- 爬虫学习笔记(十一)—— Scrapy框架(六):媒体管道
- cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计
- think php a方法,PHP_ThinkPHP之A方法实例讲解,ThinkPHP的A方法用于在内部实例 - phpStudy...
- matlab api接口调用json格式