opencv ellipse函数_13、OpenCV绘图和文本显示
我们经常想要绘制各种形状,为此,OpenCV提供了一系列功能,可以绘制直线,矩形,圆等。OpenCV的绘图功能适用于图像,但其中大多数仅影响前三个通道,在单通道图像的情况下仅默认第一个通道。大多数绘图支持颜色,厚度,线条类型的修改。
当指定颜色时,使用Scalar对象,大部分只使用前三个值。有时可以使用Scalar中的第四个值来表示alpha通道,但绘图函数目前不支持alpha混合。另外, OpenCV使用BGR转换多通道图像以进行颜色渲染。
绘制功能的厚度和线型参数两者都是整数,但后者唯一可接受的值是4,8或 LINE_AA等。厚度是以像素为单位粗细。对于圆形,矩形和所有其他闭合形状,厚度参数也可以设置为FILLED。在这种情况下,结果是绘制的图形将以与边缘相同的颜色填充。lineType参数指示行应该是“4连接”,“8连接”还是消除锯齿。
对于绘图算法,通常将端点(线),中心点(圆),角(矩形)等指定为整数。这些与像素对齐。在有可用移位的情况下,它为整数参数中的位数,将其视为小数位。例如,如果想要一个以(5,5)为中心的圆,半径设置为1,那么这个圆将被画成(2.5,2.5)。这种效果通常会非常微妙,并取决于所使用的线型。对于消除锯齿的线条效果最明显。表1是绘制函数
表1 绘制函数
函数名 |
说明 |
circle() |
绘制圆 |
clipLine() |
该函数用来判断点pt1和点pt2连接的直线是否在一个矩形范围内 |
ellipse() |
绘制椭圆 |
ellipse2Poly() |
跟ellipse()函数类似,指定采样点的角度参数后,会计算出一系列点,可以用这些点作为顶点的多边形来近似指定的椭圆弧 |
fillConvexPoly() |
绘制一个填充的多边形 |
fillPoly() |
绘制任意数量的填充的多边形,可以处理自交点 |
line() |
绘制直线 |
rectangle() |
绘制矩形 |
polyLines() |
绘制多边形 |
circle()的第一个参数就是图像。接下来是中心,二维点和半径。其余参数是标准颜色,厚度,线型和移位。
clipLine()此函数用于确定由两个点pt1和pt2指定的线是否位于矩形边界内。
ellipse()函数与circle()函数非常相似,主要区别在于Size类型的axes参数。高度和宽度参数表示椭圆的长轴和短轴的长度。角度是从水平逆时针测量的长轴的角度,startAngle和endAngle指示开始和结束的角度。因此,对于完整的椭圆,必须分别将这些值设置为0和360。
指定椭圆的替代方法是使用边界框。在这种情况下,RotatedRect的参数框完全指定了椭圆的大小和方向。。
ellipse2Poly()函数由ellipse()在内部计算椭圆弧,但也可以自己调用它。给定有关椭圆弧(ellipse()中定义的椭圆弧参数(中心,轴,角度,startAngle和endAngle-all)和指定要采样的点之间角度的参数信息, ellipse2Poly ()计算一系列点,形成了指定的椭圆弧的多边形逼近。计算的点将返回到矢量<> pts中。
fillConvexPoly()函数如果传递给它的多边形具有自相交,则会出错它将无法正常工作.2 pts中的点被视为顺序,并且pts中的最后一点 第一点是隐含的(即,多边形被假定为关闭)。
fillPoly绘制任意数量的填充多边形。fillConvexPoly()不同,它可以处理具有自相交的多边形。
函数line()在图像中绘制一条从pt1到pt2的直线。线条会被图像边界自动裁剪
rectangle()函数在图像中绘制一个从pt1到pt2的矩形。
polyLines函数绘制任意数量的未填充多边形。它可以处理一般多边形,包括具有自交叉的多边形。
表2 两个文本绘图功能。
函数 |
说明 |
putText() |
在图像中绘制指定的文本 |
getTextSize() |
确定文本的宽度和高度 |
putText函数是OpenCV的文本绘制函数; 它只是将一些文本投射到图像上。除非bottomLeftOrigin标志为true,否则文本将在文本框的左上角以指示的颜色打印,在这种情况下,文本框的左下角位于原点。使用的字体由fontFace参数选择,该参数可以是表3中列出的任何一种。
表3 字体
FONT_HERSHEY_SIMPLEX |
FONT_HERSHEY_PLAIN |
FONT_HERSHEY_DUPLEX |
FONT_HERSHEY_COMPLEX |
FONT_HERSHEY_TRIPLEX |
FONT_HERSHEY_COMPLEX_SMALL |
FONT_HERSHEY_SCRIPT_SIMPLEX |
FONT_HERSHEY_SCRIPT_COMPLEX |
每种字体都有一个大小。当fontScale不是1.0时,在绘制文本之前,字体大小由该数字缩放。图1显示了每种字体的示例。
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"
#include"iostream"
usingnamespace cv;
usingnamespace std;
int main(intargc, char** argv)
{
Mat src = imread("E:/绘制.jpg", 1);
namedWindow("原图", 0);
imshow("原图", src);
circle(src, Point2d(100, 100), 100, Scalar(255, 0, 0), 3,4, 0);
ellipse(src, Point2d(350, 100), Size(100, 50), 0, 0,360, Scalar(0, 255, 0), 3, 8, 0);
line(src, Point2d(500, 50), Point2d(600, 100), Scalar(0, 0, 255), 3,4, 0);
rectangle(src, Rect(100, 300, 100,80), Scalar(255, 255, 0), 3, 4, 0);
Point p[2][3] = { { Point(300, 400), Point(400, 380), Point(450, 260) },
{ Point(420, 540), Point(540, 300), Point(570,530) } };
constPoint *pp[] = { p[0], p[1] };
int n[] = { 4, 4 };
polylines(src, pp,n,1,true, Scalar(0, 255, 255), 3,8, 0);
fillPoly(src, pp, n, 1, Scalar(255, 255,0),4,0);
bool isOk = clipLine(Rect(50, 50, 200,200), p[0][0], p[0][1]);
vector<Point2i> pts;
ellipse2Poly(Point(350, 250), Size(200, 150), 30,0, 200, 4, pts);
Point Points[5] = { { 520,550 },{578,550 },{ 540,440 },{ 532,432 },{ 500,530 } };
fillConvexPoly(src,Points, 5, Scalar(255, 0, 255));
putText(src, "OpenCV Draw Graphics And Text",Point(100,100), FONT_HERSHEY_PLAIN, 1.0, Scalar(255, 255, 0));
namedWindow("OpenCV绘制图形和文本演示", 0);
imshow("OpenCV绘制图形和文本演示", src);
waitKey(0);
return 0;
}
opencv ellipse函数_13、OpenCV绘图和文本显示相关推荐
- python opencv单通道转多通道_13、OpenCV绘图和文本显示
我们经常想要绘制各种形状,为此,OpenCV提供了一系列功能,可以绘制直线,矩形,圆等.OpenCV的绘图功能适用于图像,但其中大多数仅影响前三个通道,在单通道图像的情况下仅默认第一个通道.大多数绘图 ...
- python opencv resize函数_Python OpenCV中的resize()函数的使用
改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者.也可以按比例调整图像大小. 这里将介绍resize()函数的语法及实例. 语法 函数原型 cv2.resize(src, dsize[, ds ...
- OpenCV——line、circle、rectangle、ellipse、polylines函数的使用和绘制文本putText函数以及绘制中文的方法。
学习OpenCV的过程中,画图是不可避免的,本篇文章旨在介绍OpenCV中与画图相关的基础函数. 1.画线条--line()函数 介绍: cv2.line(image, start_point, en ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- OpenCV绘图和文本输出功能的实例(附完整代码)
OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 #include "opencv2/core.hpp" #incl ...
- 利用OpenCV的函数putText()为图像添加数值型文本内容
OpenCV的函数putText()的原型如下: C++原型: void cv::putText(InputOutputArray img,const String & text,Point ...
- python用函数绘制椭圆_详解opencv中画圆circle函数和椭圆ellipse函数
1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, doub ...
- OpenCV中的GUI特性 —— 绘图+鼠标画笔+轨迹栏调色板
OpenCV中的GUI特性 -- 绘图+鼠标画笔+轨迹栏调色板 这一部分内容主要包括OpenCV的绘图函数.鼠标回调函数与画图的结合和轨迹栏的使用,绘图函数的传参是关键,鼠标回调函数也是一个相当重要的 ...
- Opencv:Task01:Opencv基本了解、图像读取和绘图
Task01:Opencv基本了解.图像读取和绘图 8 bits(位值)-> 256 levels(分辨率) 灰度图像:0黑色-255白色,将灰色分成256级,一层 全彩图像RGB:颜色通道(红 ...
最新文章
- leetcode 24: 两两交换链表中的节点
- 数据库存在即更新的并发处理 - 转
- 如何从开始掌控会议?
- C++读取与保持图片
- linux 执行sh 文件是遇到找不到cd '目录'
- 使用遇到的问题_水性漆在使用过程中遇到的问题以及解决方案
- 内存泄露和溢出的区别_Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子?...
- 敏捷开发一千零一问系列之十五:同时实施CMMI和敏捷哪个为主?
- matlab迭代算法实例_智能优化算法及其MATLAB实例-免疫算法笔记
- 2年工作经验杂谈(java开发)
- 基于SSM高校教室管理系统毕业设计-附源码181523
- python图片中文汉字标注乱码,变成方框
- pc 微信小程序 位置
- XGBOOST + LR 模型融合 python 代码
- HDFS的优缺点和缺陷
- 11,基于JESD204 IP核的设计实现方法
- CSI SAP2000 v22详细安装教程(图文安装步骤)
- poi word 添加内容时 光标向下迭代生成新的段落
- 【课程整理】随机系统期末整理
- 程序员每天到底有多累?
热门文章
- [php]php设计模式 Bridge (桥接模式)
- 向域管理转型所遇到的问题
- Typesetting Engine_Gecko
- RabbitMq入门(七)消息处理(消息持久化autoDelete、消息确认ACK机制)
- Leetcode-MySQL-180. 连续出现的数字
- ElasticSearch中的分析器是什么?
- Eclipse 创建 Maven 工程
- 服务器操作系统co,搭建coturn服务器
- spark任务shell运行_Spark原理与实战之部署模式与运行机制
- 基于python的作业管理系统_python day18 作业 Django 开发主机管理系统