机器视觉学习(十二)—— 绘制图形
目录
一、绘制函数参数说明
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是小米汽车官方推出的手机应用ÿ…...
科研 | 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) 持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证ÿ…...

【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 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], …...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...