当前位置: 首页 > news >正文

机器视觉学习(十二)—— 绘制图形

目录

一、绘制函数参数说明

1.1 cv2.line()绘制直线

1.2 cv2.rectangle()绘制矩形

1.3 cv2.circle() 绘制圆形

1.4 cv2.ellipse()绘制椭圆

1.5 cv2.polylines()绘制多边形

1.6 cv2.putText() 绘制文字

二、绘制函数使用示例

2.1 在图像上绘制直线

2.2 在图像上绘制矩形

2.3 在图像上绘制圆形

2.4 在图像上绘制椭圆

三、绘制图形函数结合使用


在OpenCV中,我们可以使用几个函数来绘制不同类型的图形,例如直线、矩形、圆形和多边形。下面是几个常用的绘制函数:

一、绘制函数参数说明

1.1 cv2.line()绘制直线

线:              cv2.line(img, ps, pe, color, thickness)img:            要绘制形状的图片ps:             起点位置坐标pe:             终点位置坐标        color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

 

1.2 cv2.rectangle()绘制矩形

矩形:cv2.rectangle(img, ps, pe, color, thickness)img:            要绘制形状的图片ps:             起点位置坐标pe:             终点位置坐标        color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

1.3 cv2.circle() 绘制圆形

圆:              cv2.circle(img, center, radius, color, thickness)img:            要绘制形状的图片center:         圆心坐标radius:         圆的半径值color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

1.4 cv2.ellipse()绘制椭圆

椭圆:cv2.ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)image:          要绘制椭圆的图像center:         椭圆的中心坐标axes:           椭圆的半长轴和半短轴长度angle:          椭圆的旋转角度startAngle:     椭圆弧的起始角度endAngle:       椭圆弧的结束角度color:          椭圆的颜色,可以是RGB值或者一个单一的灰度值thickness:      椭圆的边界粗细,默认为1lineType:       椭圆的边界类型,默认为8连接线shift:          坐标的小数位数,默认为0

1.5 cv2.polylines()绘制多边形

多边形:cv2.polylines(img, pts, isClosed, color, thickness)img:           要绘制图形的图像pts:           多边形的顶点坐标列表isClosed:      指定是否闭合多边形(为True时闭合,为False时不闭合)color:         多边形的颜色(BGR格式)thickness:     多边形的边界线的粗细程度

1.6 cv2.putText() 绘制文字

添加文字:         cv2.putText(img, "text", org, fontface, fontscale, color, thickness)img:            要绘制形状的图片text:           文字内容org:            文字在图像中的左下角坐标fontFace:       字体类型,可选叁数有几种fontScale:      缩放比例,用该值乘以程序字体默认大小即为字体大小color:          绘制的颜色  (可以是一个颜色阈值)thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

二、绘制函数使用示例

2.1 在图像上绘制直线

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.line(image, (0, 0), (500, 500), (0, 255, 0), 3)  # 绘制一条绿色的直线cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 在图像上绘制矩形

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.rectangle(image, (100, 100), (400, 400), (0, 0, 255), 2)  # 绘制一个红色的矩形cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.3 在图像上绘制圆形

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.circle(image, (250, 250), 100, (255, 0, 0), -1)  # 绘制一个蓝色的填充圆cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.4 在图像上绘制椭圆

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.ellipse(image, (250, 250), (100, 200), 0, 0, 360, (255, 255, 0), -1)  # 绘制一个黄色的填充椭圆cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、绘制图形函数结合使用

示例:

import cv2 as cv
import numpy as npimg = np.zeros((480,480,3),np.uint8)                            # 初始化图像: np.zeros(length, width, 颜色通道数, np.uint8)        
img = cv.line(img,(0,0),(480,480),(0,0,255),5)                  # 画线: cv.line(img, 起点位置坐标, 终点位置坐标, color, 线宽)
img = cv.rectangle(img,(100,100),(300,300),(0,255,0),5)
img = cv.circle(img,(200,200),90,(255,0,0),5)                   # 画圆: cv.rectangle(img, ps, pe, color,传入 -1表示填充形状)
img = cv.putText(img,"xin",(100,90),cv.FONT_HERSHEY_SIMPLEX,1,(255,255,0),2)            # 添加文字      颜色通过BGR表达cv.imshow("img",img)
xin = cv.waitKey(0)
if xin == 27:cv.destroyAllWindows()

运行结果:

 

相关文章:

机器视觉学习(十二)—— 绘制图形

目录 一、绘制函数参数说明 1.1 cv2.line()绘制直线 1.2 cv2.rectangle()绘制矩形 1.3 cv2.circle() 绘制圆形 1.4 cv2.ellipse()绘制椭圆 1.5 cv2.polylines()绘制…...

软考信息处理技术员2024年5月报名流程及注意事项

2024年5月软考信息处理技术员报名入口: 中国计算机技术职业资格网(http://www.ruankao.org.cn/) 2024年软考报名时间暂未公布,考试时间上半年为5月25日到28日,下半年考试时间为11月9日到12日。不想错过考试最新消息的…...

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令,但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写,用于显示文件或目录的磁盘使用情况。du 命令用于查看指…...

MacOS Docker 部署 Redis 数据库

一、简介 Redis是一个开源的、使用C语言编写的、基于内存亦可持久化的Key-Value数据库,它提供了多种语言的API,并支持网络交互。Redis的数据存储在内存中,因此其读写速度非常快,每秒可以处理超过10万次读写操作,是已知…...

个推助力小米汽车APP实现智能用户触达,打造智能出行新体验

4月3日,小米SU7首批交付仪式在北京亦庄的小米汽车工厂总装车间举行,全国28城交付中心也同步开启首批交付。随着小米SU7系列汽车的正式发售和交付,小米汽车APP迎来了用户体量的爆发式增长。 小米汽车APP是小米汽车官方推出的手机应用&#xff…...

科研 | SCI、SCIE、ESCI、JIF、IF、IEEE Fellow

文章目录 SCISCIESCIE和SCI的区别SCIE和ESCI的区别JIF和IF有什么不同吗?IEEE Fellow SCI 科学引文索引(Science Citation Index,SCI)是由Clarivate Analytics(原Thomson Reuters)维护的一个重要的学术引文…...

10倍提效!用ChatGPT编写系统功能文档。。。

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT,我们能让编写系统功能文档的效率提升10倍以上。 ​《Leetcode算法刷题宝典》一位阿里P8大佬总结的刷题笔记…...

【Linux进阶之路】地址篇

文章目录 一、ipv4地址1. 基本概念2. 分类3.CIDR4.特殊的ip地址 二、IP协议1. 协议字段2.分片与重组3.路由 三、NAT技术1.公有和私有2.NAT3.NAPT 四、ARP协议1.MAC地址2.ARP 五、DHCP协议六、DNS协议尾序 一、ipv4地址 1. 基本概念 概念:IP地址,英文全…...

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 贪心算法,这不就是常识?还能叫贪心?LeetCode:1005.K次取反后最大化的数组和_哔哩哔…...

Rust线程间通信通讯channel的理解和使用

Channel允许在Rust中创建一个消息传递渠道,它返回一个元组结构体,其中包含发送和接收端。发送端用于向通道发送数据,而接收端则用于从通道接收数据。不能使用可变变量的方式,线程外面修改了可变变量的值,线程里面是拿不…...

Vue3组件基础示例

组件是vue中最推崇的,也是最强大的功能之一,就是为了提高重用性,减少重复性的开发。 如何使用原生HTML方法实现组件化 在使用原生HTML开发时,我们也会遇到一些常见的功能、模块,那么如何在原生HTML中使用组件化呢&am…...

如何使用PL/SQL Developer工具导出clob字段的表?

1 准备测试数据 导出测试对象:表test_0102,others字段为clob类型 --创建中间表test_0101 create table test_0101( id number, name varchar2(20), others clob);--插入100条测试数据 beginfor i in 1..100 loopinsert into test_0101 values(i,i||_a,l…...

蓝桥杯刷题 深度优先搜索-[NewOJ P1158]N皇后(C++)

题目描述 n皇后问题:n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 上面布局用序列2 4 6 1 3 5表示,第i个数字表示第i行皇后放的列号。 按照这种格式输出前3个解,并统计总解数。 输入格式 输入一个正整数n&a…...

python实例2.2:编写一个装饰器,计算任何一个函数执行的时间(详解及其知识点拓展)

目录 一、编写一个装饰器,计算任何一个函数执行的时间 二、装饰器详解,及其用法举例...

Jenkins 持续集成 【CICD】

持续集成 (Continuous integration,简称CI) 持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证&#xff…...

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…...

Vue - 你知道Vue组件之间是如何进行数据传递的吗

难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…...

IP网络对讲广播系统审计

前言 这个系统是前两年在一个内网遇到的,当时顺手试了一个admin登陆之后再没有然后了,最近发现有大佬分享关于这个系统的漏洞,于是就把自己当初看的几个漏洞分享一下,系统比较简单,漏洞点很多,不要做坏事哦…...

蓝桥杯刷题--python38

197. 阶乘分解 - AcWing题库 def init(n): for i in range(2,n1): if not st[i]:primes.append(i) j0 while primes[j]*i<n: st[i*primes[j]]1 if i%primes[j]0: break j1 nint(input(…...

【LeetCode热题100】33. 搜索旋转排序数组(二分)

一.题目要求 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], …...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...