机器视觉学习(十二)—— 绘制图形
目录
一、绘制函数参数说明
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], …...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
