绘制线段:line 函数

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

  • img: 要绘制线段的图像。
  • pt1: 线段的起点。
  • pt2: 线段的终点。
  • color: 线段的颜色,通过一个 Scalar 对象定义。
  • thickness: 线条的宽度,默认值为 1。
  • lineType: 线段的类型。可以取值 8,4,和 LINE_AA, 分别代表8邻接连接线,4 邻接连接线和反锯齿连接线。默认值为 8 邻接。为了获得更好地效果可以选用 LINE_AA(采用了高斯滤波)。
  • shift: 坐标点小数点位数,默认值 0。
// 绘制直线
void DrawLine(Mat img, Point start, Point end){
int thickness = ;
int lineType = ;
line(img, start, end, Scalar(, , ), thickness, lineType);
}

绘制椭圆:ellipse 函数

void ellipse(Mat& img, Point center, Size axes,double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1,int lineType=8, int shift=0);

  • img: 要绘制椭圆的图像。
  • center: 椭圆中心点坐标。
  • axes: 椭圆位于该 Size 决定的矩形内。(即定义长轴和短轴)。
  • angle: 椭圆的角度。
  • startAngle: 椭圆开始绘制时角度,顺时针旋转。
  • endAngle: 椭圆绘制结束时角度。(若绘制一个完整的椭圆,则startAngle=0, endAngle = 360)。
  • color: 椭圆的颜色。
  • thickness: 绘制椭圆线粗。负数表示全部填充。
  • lineType、shift:同上。
void DrawEllipse(Mat img,Point center,Size rect_size, double angle) {
int thickness = ;
int lineType = ;
ellipse(img, center, rect_size, angle, , , Scalar(, , ), thickness, lineType);
imshow("img", img);
}

绘制矩形:rectangle 函数

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

  • pt1: 矩形的左上角坐标。
  • pt2: 矩阵的右下角坐标。
  • 其余同上。
//绘制矩形
rectangle(src, Point(, 0),Point(width, width), Scalar(, , ), -, );

绘制圆:circle 函数

void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

  • center: 圆心坐标。
  • radius: 半径。
  • 其余同上。
//绘制实心圆
void DrawFilledCircle(Mat img, Point center, int radius){
int thickness = -; //线粗
int lineType = ;
circle(img, center, radius, Scalar(, , ),thickness, lineType);
}

填充多边形:fillPoly 函数

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

  • pts: 多边形定点集。
  • npts: 多边形的顶点数目。
  • ncontours: 要绘制多边形的数量。
  • offset: 所有点轮廓的可选偏移。
  • 其余同上。
//实现凹多边形绘制
void DrawPolygon(Mat img){
int lineType = ; //创建一些点
Point rootPoints[][];
rootPoints[][] = Point(wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point( * wwidth / , wwidth / );
rootPoints[][] = Point(wwidth / , wwidth / );
rootPoints[][] = Point(wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point( * wwidth / , * wwidth / );
rootPoints[][] = Point(wwidth / , * wwidth / );
const Point* all_pts[] = { rootPoints[] };
int pt_num[] = { };
fillPoly(img, all_pts, pt_num, , Scalar(, , ), lineType);
}

显示文字:putText 函数

void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false )

  • img:显示文字所在图像.
  • text:待显示的文字.
  • org:文字在图像中的左下角坐标.
  • fontFace:字体类型,可选择字体:

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

以上所有类型都可以配合FONT_HERSHEY_ITALIC使用,产生斜体效果。

  • fontScale:字体大小,该值和字体内置大小相乘得到字体大小
  • color:文本颜色
  • thickness:写字的线的粗细
  • lineType:线型.
  • bottomLeftOrigin:false, 图像数据原点在左下角。否则, 图像数据原点在左上角.
 putText(Image, "OpenCv", Point(width / , width / ), FONT_HERSHEY_PLAIN, , Scalar(, , ), , , false);

借鉴博客:https://www.cnblogs.com/ishero/p/11136315.html

opencv —— line、ellipse、rectangle、circle、fillPoly、putText 基本图形的绘制的更多相关文章

  1. opencv-6-图像绘制与opencv Line 函数剖析

    opencv-6-图像绘制与opencv Line 函数剖析 opencvc++qt 开始之前 越到后面, 写的越慢, 之前还抽空去看了下 学堂在线那篇文章提供的方法, 博客第一个人评论的我, 想想还 ...

  2. opencv中画圆circle函数和椭圆ellipse函数

    1.      void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, ...

  3. Python下opencv使用笔记(二)(简单几何图像绘制)

    简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...

  4. opencv 6 图像轮廓与图像分割修复 1 查找并绘制轮廓 寻找物体的凸包

    查找并绘制轮廓 寻找轮廓(findContours)函数 绘制轮廓(drawContours()函数) 基础实例程序:轮廓查找 #include <opencv2/opencv.hpp> ...

  5. 【opencv学习笔记四】opencv3.4.0图形用户接口highgui函数解析

    在笔记二中我们已经知道了,在highgui文件夹下的正是opencv图形用户接口功能结构,我们这篇博客所说的便是D:\Program Files\opencv340\opencv\build\incl ...

  6. JAVAFX-4 开发应用

    JavaFx 形状 Node类是所有JavaFX场景图形节点的基本基类.它提供了转换和应用效果到任何节点的能力. javafx.scene.shape.Shape类是Node类的子类.所有较旧的Jav ...

  7. 说说设计模式~组合模式(Composite)

    返回目录 何时能用到它? 组合模式又叫部分-整体模式,在树型结构中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦.对于今天这个 ...

  8. 【opencv基础】opencv和dlib库中rectangle类型之间的转换

    前言 最近使用dlib库的同时也会用到opencv,特别是由于对dlib库的画图函数不熟悉,都想着转换到opencv进行show.本文介绍一下两种开源库中rectangle类型之间的转换. 类型说明 ...

  9. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

随机推荐

  1. lua学习之语句篇

    语句 赋值 修改一个变量或者修改 table 中的一个字段的值 多重赋值,lua 先对等号右边的所有元素进行求值,然后再赋值 值的个数小于变量的个数,那么多余的变量就置为 nil 初始化变量,应该为每 ...

  2. C# 多态和接口

    1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...

  3. (一)maven基本配置,概念,常用命令

    ---恢复内容开始--- 首先明白maven是什么, maven是一个自动化构建工具,可以将你一个项目的html,java,css,js等代码构建成一个可发布的产品,相当于就是将你从写完代码到部署完成 ...

  4. win10系统下安装JDK1.8及配置环境变量的方法

    本次演示基于windows10操作系统,如果你是linux,请参考:https://www.yn2333.com/archives/linux上安装JDK8 1:下载安装包 地址:https://ww ...

  5. ELK-图示nginx中ip的地理位置

    一.环境准备: ELK stack 环境一套 geolite数据库文件 二.下载geolite数据库(logstash机器上解压,logstash需调用): geolite官网:https://dev ...

  6. Windows 远程桌面连接Ubuntu14.04

    在Ubuntu系统进行如下系统配置 1.安装xrdp sudo apt-get install xrdp 2.安装vnc4server sudo apt-get install vnc4server ...

  7. 安利自己写的easy-clipboard库

    概述 clipboard.js 是一个非常好用的剪切板插件,但是随着前端框架的演变,用户与网页交互的方式越来越多,不仅限于点击事件了,并且在很多情况下,我们可能不需要它强制性自带的点击事件,所以我打算 ...

  8. 浅谈单利模式及其应用场景(Python)

    python 中的单利模式 使用场景: + Python的logger就是一个单例模式,用以日志记录 + Windows的资源管理器是一个单例模式 + 线程池,数据库连接池等资源池一般也用单例模式 + ...

  9. 洛谷P1157----组合数的输出

    #include<stdio.h> ] = { ,,,,,,,,,,,,,,,,,,, }; ]; int n, r; ; void dfs(int x) {//x表示当前是第几个数 in ...

  10. 关于Java/Kotlin下载图片,图片打开不能显示问题探究

    图片下载其实是个很简单的功能,通过IO流从在线地址获取流,之后将流输出到文件即可完成下载功能,但是,最近我发现某个网站中的图片下载成功,但是打开却是无法打开,这让我迷惑,百度上根本就没有人说清楚 今天 ...