OpenCV绘图和注释

OpenCV的绘图函数可以在任意深度的图像上工作,但在大多数情况下,它们只对图像的前三个通道有影响BGR,如果是单通道图像,则默认只影响第一个通道。大多数绘图函数都支持操作对象的颜色、宽度、线型和亚像素对齐等参数。

艺术线条

画直线或者其他图形的函数通常可以接受宽度(thickness)和线型(lineType)的参数。这两个参数都是整型的,lineType参数只能是4、8或cv::LINE_AA,分别代表4邻域连接、8邻域连接和平滑处理。

 

同一条直线分别使用4邻域连接(A)8邻域连接(B)和平滑处理(C)的线型

 填充多边形

cv::circle()  绘制圆形

void cv::circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=LINE_8, int shift=0)

参数:

参数imgcenterradiuscolorthicknesslineTypeshift
含义绘制的圆圆心半径颜色线宽线型小数位数

cv::clipLine()  判断pt1-pt2的直线是否在矩形范围内,只有完全在矩阵范围外时才返回false

bool cv::clipLine(Size imgSize, Point& pt1, Point& pt2)

bool cv::clipLine(Size2I imgSize, Point& pt1, Point& pt2)

bool cv::clipLine(Rect imgRect, Point& pt1, Point& pt2)

参数:

参数imgSize或imgRectpt1pt2
含义指定矩阵第一个点的坐标第二个点的坐标

注:前两种形式只指定矩形的大小,默认从(0,0)点开始。

cv::ellipse()  绘制椭圆

void cv::ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1, int lineType=LINE_8, int shift=0)

void cv::ellipse(InputOutputArray img, const RotatedRect& box, const Scalar& color, int thickness=1, int lineType=LINE_8)

参数:

参数imgcenteraxesanglestartAngleendAnglecolorthicknesslineTypeshift
含义绘制的椭圆中心椭圆尺寸主轴角度圆弧起点圆弧终点颜色线宽线型小数位数

第二种形式其实是根据外接矩形绘制椭圆。

cv::ellipse2Poly()  用折线近似弧度

void cv::ellipse2Poly(Point center, Size axes, int angle, int arcStart, int arcEnd, int delta, std::vector<Point>& pts) 

void cv::ellipse2Poly(Point2d center, Size2d axes, int angle, int arcStart, int arcEnd, int delta, std::vector<Point>& pts)

参数:

参数centeraxesanglestartAngleendAngledeltapts
含义圆心中心主轴角度圆弧起点圆弧终点折线顶点间的角度,定精度结果

cv::fillConvexPoly()  绘制一个填充的多边形

void cv::fillConvexPoly(Mat& img, const Point* pts, int npts, const Scalar& color, int lineType=LINE_8, int shift=0)

void cv::fillConvexPoly(InputOutputArray img, InputArray pts, int npts, const Scalar& color, int lineType=LINE_8, int shift=0)

参数:

参数imgptsnptscolorthicknesslineTypeshift
含义绘制的多边形顶点集pts中的点数颜色线宽线型小数位数

cv::fillPoly()  绘制任意数量的填充的多边形

void cv::fillPoly(Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int lineType=LINE_8, int shift=0, Point offset=Point())

void cv::fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar& color, int lineType=LINE_8, int shift=0, Point offset=Point())

参数:

参数imgptsnptsncontourscolorthicknesslineTypeshiftoffset
含义绘制的多边形顶点集pts中的点数多边形数目颜色线宽线型小数位数顶点偏移量

第二种形式,pts中有多少个元素就有多少个多边形。

cv::line()  绘制直线

void cv::line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=LINE_8,int shift=0)

参数:

参数imgpt1pt2colorthicknesslineTypeshift
含义绘制的直线第一个点第二个点颜色线宽(4或8)线型小数位数

cv::polyLines()  绘制任意数量的未填充的多边形

void cv::polyLines(Mat& img, const Point* const* pts, const int* npts, int ncontours, bool isClosed, const Scalar& color, int thickness=1, int lineType=LINE_8,int shift=0)

void cv::polyLines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar& color, int thickness=1, int lineType=LINE_8,int shift=0)

参数:

参数imgptsnptsncontoursisClosedcolorthicknesslineTypeshiftoffset
含义绘制的多边形顶点集pts中的点数多边形数目是否封闭颜色线宽(4或8)线型小数位数顶点偏移量

第二种形式,pts中有多少个元素就有多少个多边形。isClosed为false则不封闭。

cv::rectangle()  绘制矩形

void cv::rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=LINE_8,int shift=0)

void cv::rectangle(InputOutputArray img, Rect rec, const Scalar& color, int thickness=1, int lineType=LINE_8,int shift=0)

参数:

参数imgpt1pt2reccolorthicknesslineTypeshift
含义绘制的矩形第一个点第二个点矩形的坐标和大小颜色线宽线型小数位数

cv::LineIterator  得到一个用来顺序得到网格线每一个像素的迭代器

cv::LineIterator::LineIterator(const Mat& img, Point pt1, Point pt2, int connectivity=8, bool leftToRight=false)

参数:

参数imgpt1pt2connectivityleftToRight
含义图像矩阵第一个点第二个点线型(4或8)是否从左到右

分析:初始化后,直线像素的数量就保存在一个整型成员变量cv::LineIterator::count中,重载的取值算子cv::LineIterator::operator*()返回一个指向当前像素的指针。从直线的一端开始,通过重载增量算子cv::LineIterator::operator++()移动当前像素。

字体和文字

cv::putText()  在图像中绘制文字

void cv::putText(InputOutputArray img, const String& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=LINE_8, bool bottomLeftOrigin=false)

参数:

参数imgtextorgfontFacefontScalecolorthicknesslineTypebottomLeftOrigin
含义原始图片文本内容左上角的位置字体字体大小颜色线宽线型(4,或8)是否左下角为原点
可用字体
标识符描述
cv::FONT_HERSHEY_SIMPLEX普通大小无衬线字体
cv::FONT_HERSHEY_PLAN小号无衬线字体
cv::FONT_HERSHEY_DUPLEX普通大小无衬线字体,但比cv::FONT_HERSHEY_SIMPLEX更复杂
cv::FONT_HERSHEY_COMPLEX普通大小无衬线字体,但比cv::FONT_HERSHEY_DUPLEX更复杂
cv::FONT_HERSHEY_TRIPLEX普通大小无衬线字体,但比cv::FONT_HERSHEY_COMPLEX更复杂
cv::FONT_HERSHEY_COMPLEX_SMALL小号版本的cv::FONT_HERSHEY_COMPLEX
cv::FONT_HERSHEY_SCRIPT_SIMPLEX手写体
cv::FONT_HERSHEY_SCRIPT_COMPLEX比cv::FONT_HERSHEY_SCRIPT_SIMPLEX更复杂的变体
cv::FONT_HERSHEY_ITALIC斜体,可以和以上每一种组合使用
上述字体对应字样

cv::getTextSize()  获取一个文本的宽度和高度

Size cv::getTextSize(const String& text, int fontFace, double fontScale, int thickness, int* baseLine)

参数:

参数textfontFacefontScalethicknessbaseLine
含义文本字体字体大小线宽文字最低点文字基线的y坐标值

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

012.对netmap API的解读

一.简要说明&#xff1a; 1.netmap API主要为两个头文件netmap.h 和netmap_user.h &#xff0c;当解压下载好的netmap程序后&#xff0c;在./netmap/sys/net/目录下&#xff0c;本文主要对这两个头文件进行分析。 2.我们从netmap_user.h头文件开始看起。 二.likely()和unlikely…

【学术笔记】探索大脑静息态活动中的动态信息

来源&#xff1a;脑科学2019年6月18日下午&#xff0c;来自加州大学河滨分校(The University of California, Riverside) Bourns工程学院的生物工程系主任Xiaoping Hu (胡小平)教授应北京大学麦戈文脑研究所方方老师的邀请来到北京大学&#xff0c;在王克桢楼1113室为老师和同学…

OpenCV中的函数子

随着OpenCV的发展&#xff0c;封装了越来越多的功能&#xff0c;而往往这些功能不是一个函数就能完成的&#xff0c;实现为一组函数又会导致整个库的函数变得杂乱无章&#xff0c;因此常常使用一个新的对象类型来实现这个新功能。通过重载operator()来生成对象或函数子。下面主…

查找会议论文的会议地址

有时候会议论文conference proceedings引用格式中要求出现会议地址&#xff0c;如下所示 查找会议地址的方法为直接搜索该会议论文&#xff0c;以ieee为例&#xff0c;会议地址信息在该论文的首页信息中&#xff1a; Conference Location: Arlington, VA, USA中的三项就分别对应…

OpenCV可移植图形工具HighGUI实现图像和视频操作

OpenCV把用于操作系统、文件系统以及摄像机等硬件设备交换的函数纳入了HighGUI&#xff08;High-level Graphical User Interface&#xff09;模块中。有了HighGUI模块&#xff0c;我们可以方便地打开窗口、显示图像、读出或写入图像相关的文件、鼠标事件和键盘事件。下面将对三…

华为内部深度解读,关于5G发展的28个核心问题

来源 | 腾讯深网关于5G技术动态与商用进展业界最关心的核心问题&#xff0c;华为5G产品线相关负责人近日对《深网》等进行了详细解读&#xff0c;以下是《深网》整理的问答实录&#xff1a;一、5G先进性与行业应用1. 5G到底是什么&#xff1f;和4G比有什么不一样&#xff1f;从…

OpenCV鼠标事件和滑动条事件

鼠标事件 ① 鼠标事件是通过传统的回调函数机制来完成。 void your_mouse_callback(int event, int x, int y, int flags, void* param) 其中&#xff0c;第一个参数要指明事件&#xff0c;第二个和第三个参数是鼠标事件的位置&#xff0c;第四个参数是标志位&#xff0c;第…

GSMA:中国有望成为全球领先的5G市场之一

来源&#xff1a;GSMA移动智库近日&#xff0c;GSMA&#xff08;全球移动通信协会&#xff09;发布首个《中国移动经济发展报告2019》。报告称&#xff0c;中国的移动生态系统在2018年为中国经济创造了5.2万亿元 (7,500亿美元) 的附加值&#xff0c;相当于2018年中国GDP的5.5%。…

canal —— 阿里巴巴mysql数据库binlog的增量订阅消费组件

阿里巴巴mysql数据库binlog的增量订阅&消费组件canal &#xff0c;转载自 https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立&#xff0c;群号&#xff1a;161559791 &#xff0c;欢迎加入进行技术讨论。canal消费端项目开源: Otter(分布式数据库同步系统…

OpenCV的滤波与卷积

目录 预备知识 滤波、核和卷积 边界外推和边界处理 阈值化操作 Otsu算法 自适应阈值 平滑 简单模糊和方框型滤波器 中值滤波器 高斯滤波器 双边滤波器 导数和梯度 索贝尔导数 Scharr滤波器 拉普拉斯变换 图像形态学 膨胀和腐蚀 通用形态学函数 开操作和闭操…

中国科协发布20个重大科学问题和工程技术难题

来源&#xff1a;晓艳的科技坊6月30日&#xff0c;中国科协在第二十一届中国科协年会闭幕式上发布了2019年20个对科学发展具有导向作用、对技术和产业创新具有关键作用的前沿科学问题和工程技术难题。   中国科学院院士、中国科协名誉主席韩启德表示&#xff0c;中国科协重大…

OpenCV常见的图像变换

拉伸、收缩、扭曲和旋转 最简单的图像变换是调整图像大小&#xff0c;使其变大或变小。但实际操作时要比想象的复杂一些&#xff0c;因为调整大小带来了像素如何插值&#xff08;放大&#xff09;或合并&#xff08;减少&#xff09;的问题。 均匀调整 cv::resize() void c…

边缘计算对于工业物联网的重要性

来源&#xff1a;物联网世界随着物联网的发展&#xff0c;工业制造设备所产生的数据量将越来越多。如果这些数据都要放到云端处理&#xff0c;就需要无穷无尽的频谱资源、传输带宽和数据处理能力&#xff0c;“云”难免不堪重负&#xff0c;此时就需要边缘计算来分担云计算的压…

全新算法助机器学习抵抗干扰

来源&#xff1a;科技日报 机器学习模型受到攻击将产生严重的后果&#xff0c;但如果对这一情形提前预防呢&#xff1f;就像人类针对即将到来的病毒去接种疫苗一样。据澳大利亚联邦科学与工业研究组织&#xff08;CSIRO&#xff09;官方网站消息&#xff0c;该机构的一个研究团…

磁共振成像技术发展简史丨科学史

来源&#xff1a;中国科学院苏州生物医学工程技术研究所编者按&#xff1a;核磁共振是一种常见的影像检查方式。全球首次为病人做核磁共振检查是在1977年7月3日。该技术是基于物理学家拉比有关测量原子核在磁场中性质的研究发展而来的。拉比在1988年去世前不久&#xff0c;也使…

最先进的AI还不如动物聪明?首届AI-动物奥运会英国开赛!

来源&#xff1a;animalaiolympics,新智元【导读】目前&#xff0c;即使是最先进的AI智能体&#xff0c;在适应环境变化的能力方面&#xff0c;还无法与动物相提并论。听上去很不可思议对不对&#xff0c;不服来比比看&#xff1f;日前&#xff0c;动物-AI奥运会正式拉开帷幕&a…

background-size 兼容ie8以下浏览器的方法

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(srcimgs/section-1.png, sizingMethodscale); -ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(srcimgs/section-1.png, sizingMethodscale)";转载于:https://www.cnblogs.com/wend…

一文尽览5G全产业链及新机遇

来源&#xff1a;5G产业圈5G牌照的发放&#xff0c;对通信产业发展具有重要的战略意义。这不仅仅是为了5G商用&#xff0c;更赋予了多重目的。比如为了利用5G技术推动经济结构创新、促进经济增长、帮助华为中兴、结交爱立信诺基亚&#xff0c;分化高通英特尔……甚至可能是为了…

Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)上

Windows10Ubuntu 18.04.2ROS 安装笔记&#xff08;SSD单硬盘&#xff09;上一、前言二、化繁为简三、补充说明小结一、前言 最近需要学习ROS和python,于是便需要装Linux系统&#xff0c;于是选则了主流的 Ubuntu 18.04系统&#xff0c;同时与ROS 也是兼容性最好的系统。 之前…

实验室蒋田仔研究员:脑网络组图谱近10年研究详解【附PPT】

来源&#xff1a;模式识别国家重点实验室【导读】脑是人体最为复杂的器官&#xff0c;脑图谱是理解脑的结构和功能的基石。它为探索复杂的脑部结构和异常变化进行"导航"。因此&#xff0c;脑图谱绘制一直以来都是神经科学、认知科学、心理学和脑疾病研究的共同前沿领…