OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字

目录

1.绘制直线line()

2.绘制圆形circle()

3.绘制椭圆形ellipse() 

4.绘制矩形rectangle()

5.绘制多边形 fillPoly() 

6.绘制文字putText()

7.例子


1.绘制直线line()

CV_EXPORTS_W void line(InputOutputArray img,Point pt1, Point pt2,const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0
);
  • img:绘制圆形的图像
  • ptl:直线起始点在图像中的坐标
  • pt2: 直线终点在图像中的坐标
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

2.绘制圆形circle()

CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);
  • img:绘制圆形的图像
  • center:圆形的中心位置。
  • radius:圆形的半径长度,单位为像素。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

3.绘制椭圆形ellipse() 

CV_EXPORTS_W void 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);
  • img:绘制圆形的图像
  • center:圆的中心坐标
  • axes:椭圆主轴大小的一半。
  • angle:椭圆旋转的角度,单位为度
  • startAngle:椭圆弧起始的角度,单位为度
  • endAngle:椭圆弧终止的角度,单位为度
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

4.绘制矩形rectangle()

CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);
  • img:绘制圆形的图像
  • pt1:左上角顶点
  • pt2:右下角顶点。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

5.绘制多边形 fillPoly() 

CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,const Scalar& color, int lineType = LINE_8, int shift = 0,Point offset = Point() );
  • img:绘制圆形的图像
  • pts: 多边形顶点数组,可以存放多个多边形的顶点坐标的数组
  • color:圆形的颜色,用三通道表示
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数
  • offset:所有顶点的可选偏移。

6.绘制文字putText()

CV_EXPORTS_W void putText( InputOutputArray img, const String& text, Point org,int fontFace, double fontScale, Scalar color,int thickness = 1, int lineType = LINE_8,bool bottomLeftOrigin = false );
  • img:绘制圆形的图像
  • text:输出到图像中的文字,目前OpenCV 4只支持英文。
  • org:图像中文字字符串的左下角像素坐标。
  • fontFace:字体类型的选择标志
  • fontScale:字体的大小。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • bottomLeftOrigin: 图像数据原点的位置,默认为左上角,如果参数改为true,则原点为左下角。

其中,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_ITALIC - 斜体字体。

7.例子

   //    生成一个黑色图像用于绘制几何图形Mat img=Mat::zeros(Size(512,512),CV_8UC3);//绘制圆形circle(img,Point(50,50),25,Scalar(255,255,255),-1);//绘制一个实心圆circle(img,Point(100,50),20,Scalar(255,255,255),4);//绘制一个空心圆//绘制直线line(img,Point(100,100),Point(200,100),Scalar(255,255,255),2,LINE_4,0);//绘制一条直线//绘制椭圆ellipse(img,Point(300,255),Size(100,70),0,0,100,Scalar(255,255,255),-1);//绘制矩形rectangle(img,Point(50,400),Point(100,450),Scalar(125,125,125),-1);//绘制多边形Point pp[2][6];pp[0][0]=Point(72,200);pp[0][1]=Point(142,204);pp[0][2]=Point (226,263);pp[0][3]=Point (172,310);pp[0][4]=Point (117,319);pp[0][5]=Point (15,260);pp[1][0]=Point(359,339);pp[1][1]=Point(447,351);pp[1][2]=Point (504,349);pp[1][3]=Point (484,433);pp[1][4]=Point (418,449);pp[1][5]=Point (354,402);Point  pp2[5];pp2[0]=Point (350,83);pp2[1]=Point(463,90);pp2[2]=Point (500,171);pp2[3]=Point (421,194);pp2[4]=Point (338,141);const Point *pts[3]={pp[0],pp[1],pp2};//pts变量的生成int npts[]={6,6,5};fillPoly(img,pts,npts,3,Scalar(125,125,125),8);//绘制3个多边形putText(img,"Learn OpenCV 4",Point(100,400),2,1,Scalar(255,255,255));imwrite("/sdcard/DCIM/img.jpg",img);

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

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

相关文章

【数据结构与算法 三】常见数据结构与算法组合应用方式

一般的数据结构和对应的 很抱歉,作为一个文本AI模型,我无法直接绘制图表,但我可以为您列出常见的算法和数据结构分类,并为每个分类提供简要说明。您可以根据这些信息自行绘制图表。 算法分类: 搜索算法:用于在数据集中查找特定元素的算法,如线性搜索、二分搜索等。 排…

MTK6761/MT6761安卓核心板4G安卓智能模块详细参数性能介绍

MTK6761 安卓核心板采用12nm制程四核Cortex-A53、最高主频2.0GHZ 处理器,板载内存为 1GB8GB(2GB16GB、3GB32GB、4GB64GB),搭载Android 9.0操作系统。 MTK6761(曦力 A22)安卓核心板基本概述 MTK6761安卓核心板 是一款高性能低功耗…

HikariCP源码修改,使其连接池支持Kerberos认证

HikariCP-4.0.3 修改HikariCP源码,使其连接池支持Kerberos认证 修改后的Hikari源码地址:https://github.com/Raray-chuan/HikariCP-4.0.3 Springboot使用hikari连接池并进行Kerberos认证访问Impala的demo地址:https://github.com/Raray-chuan/springboot-kerberos-hikari-im…

2023 AZ900备考

文章目录 如何学习最近准备考AZ900考试,找了一圈文档,结果发现看那么多文档,不如直接看官方的教程https://learn.microsoft.com/zh-cn/certifications/exams/az-900/ ,简单直接,突然想到纳瓦尔宝典中提到多花时间进行思…

博客系统自动化测试项目实战(测试系列9)

目录 前言: 1.博客前端页面测试用例图 2.测试用例的代码实现 2.1登录页面的测试 2.2博客列表页面的测试 2.3写博客测试 2.4博客详情页面的测试 2.5已发布博客的标题和时间的测试 2.6注销用户的测试 结束语: 前言: 之前小编给大家讲…

Java学习笔记之----I/O(输入/输出)一

在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。想要永久地存储程序创建的数据,就需要将其保存在磁盘文件中(就是保存在电脑的C盘或D盘中),而只有数据存储起来才可以在其他程序中使用它们。Java的I/O技术可…

Shell开发实践:服务器的磁盘、CPU、内存的占用监控

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

Flutter 安装教程 + 运行教程

1.下载依赖 https://flutter.cn/docs/get-started/install/windows 解压完后根据自己的位置放置,如(D:\flutter) 注意 请勿将 Flutter 有特殊字符或空格的路径下。 请勿将 Flutter 安装在需要高权限的文件夹内,例如 C:\Program …

Elasticsearch终端命令行用法大全

API作用使用场景curl localhost:9200/_cluster/health?pretty查看ES健康状态curl localhost:9200/_cluster/settings?pretty查看ES集群的设置其中persistent为永久设置,重启仍然有效;trainsient为临时设置,重启失效curl localhost:9200/_ca…

锐捷盒式交换机S5760C版本U盘升级

1.确认设备当前版本信息 2.将升级文件包放置U盘文件夹中, U盘名称123 , 文件夹名称A 3.查看到升级包后,进行U盘升级 #upgrade usb0:/A/S5760X_RGOS12.5(4)B0702P4_install.bin 4.升级成功后 reload交换机 5.等交换机重启完毕,再次…

【Dart】学习使用(二):基本类型

前言 基本类型是语言的基础。 Dart 语言支持以下基础类型:Numbers(int、double), 整形Strings(String), 字符串Booleans(bool) , 布尔型Records((value1,value2)) 记录Lists(List ) 数组Sets(Set) 集合Maps(Map) 映射Runes(Runes,通常由 characters AP…

支付宝使用OceanBase的历史库实践分享

为解决因业务增长引发的数据库存储空间问题,支付宝基于 OceanBase 数据库启动了历史库项目,通过历史数据归档、过期数据清理、异常数据回滚,实现了总成本降低 80%。 历史数据归档:将在线库(SSD 磁盘)数据归…

基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作

文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…

ELK原理和介绍

为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化…

Ansible学习笔记11

Command和Shell模块&#xff1a; 两个模块都是用于执行Linux命令的&#xff0c;这个对于命令熟悉的工程师来说&#xff0c;用起来非常high。 Shell模块跟Command模块差不多&#xff08;Command模块不能执行一类$HOME、> 、<、| 等符号&#xff0c;但是Shell是可以的。&…

大学物理 之 安培环路定理

文章目录 前言什么是安培环路定理安培环路定理有什么作用 深入了解深入学习 前言 什么是安培环路定理 安培环路定理的物理意义在于描述了电流和磁场之间的相互作用&#xff0c;以及如何在一个封闭的回路中分析这种相互作用。 简单的来说 , 用环路定理来解决在磁场中B对任意封…

java基础-----第九篇

系列文章目录 文章目录 系列文章目录前言一、GC如何判断对象可以被回收前言 一、GC如何判断对象可以被回收 引用计数法:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计 数为0时可以回收, 可达性分析法:从 GC Roots 开始向下搜索,搜索所走过的…

TCP Header都有啥?

分析&回答 源端口号&#xff08;Source Port&#xff09; &#xff1a;16位&#xff0c;标识主机上发起传送的应用程序&#xff1b; 目的端口&#xff08;Destonation Port&#xff09; &#xff1a;16位&#xff0c;标识主机上传送要到达的应用程序。 源端&#xff0c;目…

第 3 章 栈和队列 (循环队列)

1. 背景说明 和顺序栈相类似&#xff0c;在队列的顺序存储结构中&#xff0c;除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外&#xff0c; 尚需附设两个指针 front 和 rear 分别指示队列头元素及队列尾元素的位置。约定&#xff1a;初始化建空队列时&#x…

全网都在用的nnUNet V2版本改进了啥,怎么安装?(一)

nnUNet&#xff0c;这个医学领域的分割巨无霸!在论文和比赛中随处可见他的身影。大家对于nnUNet v1版本的教程都赞不绝口&#xff0c;因为它简单易懂、详细全面&#xff0c;让很多朋友都轻松掌握了使用方法。 最近&#xff0c;我也抽出时间仔细研究了nnUNet v2&#xff0c;并全…