使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是 OpenCV 中常见的操作。在本篇文章中,我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形。

绘制线条

在 OpenCV 中,可以使用 cv2.line() 函数来绘制直线。该函数的语法如下:

cv2.line(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:起点坐标(x, y)。
  • end_point:终点坐标(x, y)。
  • color:线条颜色,格式为 (B, G, R)
  • thickness:线条的粗细,默认为 1。
示例代码:绘制一条红色的线
import cv2
import numpy as np# 创建一个黑色的图像
image = np.zeros((500, 500, 3), dtype=np.uint8)# 定义线条的起点和终点
start_point = (50, 50)
end_point = (450, 450)# 定义线条颜色(红色)
color = (0, 0, 255)  # BGR格式# 绘制线条
cv2.line(image, start_point, end_point, color, 5)# 显示图像
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

绘制矩形

OpenCV 提供了 cv2.rectangle() 函数来绘制矩形。该函数的语法如下:

cv2.rectangle(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:矩形左上角的坐标 (x, y)。
  • end_point:矩形右下角的坐标 (x, y)。
  • color:矩形颜色,格式为 (B, G, R)。
  • thickness:矩形边框的粗细。如果填充矩形,则设置为 -1
示例代码:绘制一个绿色的矩形
import cv2
import numpy as np# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)# 定义矩形颜色(绿色)
color = (0, 255, 0)  # BGR格式# 绘制矩形
cv2.rectangle(image, start_point, end_point, color, 5)# 显示图像
cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

填充矩形

如果要绘制一个填充的矩形,只需将 thickness 设置为 -1,OpenCV 会自动将矩形内部填充为指定的颜色。

示例代码:绘制一个填充的蓝色矩形
import cv2
import numpy as np# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)# 定义矩形颜色(蓝色)
color = (255, 0, 0)  # BGR格式# 绘制填充矩形
cv2.rectangle(image, start_point, end_point, color, -1)# 显示图像
cv2.imshow("Filled Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

代码解释

  1. 创建图像:我们使用 numpy.zeros() 创建一个黑色的图像,或者使用 numpy.ones() 创建一个白色的图像。dtype=np.uint8 表示图像数据类型为 8 位无符号整数,这在 OpenCV 中通常用于表示图像像素值(范围 0-255)。
  2. 绘制图形:通过 cv2.line()cv2.rectangle() 函数来绘制线条和矩形。我们定义了起始点和结束点,选择了颜色并指定了线条粗细。
  3. 显示图像cv2.imshow() 函数用于显示图像,cv2.waitKey(0) 等待用户按下任意键后关闭图像窗口,cv2.destroyAllWindows() 关闭所有打开的窗口。

总结

通过 OpenCV 绘制线条和矩形是一个非常简单的操作,可以用来标记图像中的区域、进行图形处理或为图像添加一些基本的标记。无论是使用 cv2.line() 还是 cv2.rectangle(),你都可以轻松自定义图形的颜色、位置和大小,这对于各种图像处理应用非常有用。

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

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

相关文章

WinForm 美化秘籍:轻松实现 Panel 圆角虚线边框

文章目录 1、引言2、案例实现1、创建自定义 Panel 类2、定义圆角矩形3. 使用自定义 Panel4. 调整属性5、使用背景图片来实现5、拓展:使用 Panel 的 Paint重绘单独实现虚线边框效果 3、实现效果4、总结 1、引言 在 Winform 应用程序开发中,美化用户界面&…

Spring Cloud LoadBalancer (负载均衡)

目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance,简称 LB) , 是高并发, 高可用系统必不可少的关…

OpenCloudOS简介

OpenCloudOS是一款开源的云操作系统,具有诸多特性和优势,广泛应用于多个领域。 一、项目背景 开源社区发起:由操作系统、云平台、软硬件厂商与个人共同倡议发起的操作系统社区项目,旨在打造全面中立、开放、安全、稳定易用、高…

NLP 中文拼写检测纠正论文 Automatic-Corpus-Generation

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼…

区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】

区块链安全常见的攻击分析——不安全调用漏洞 Unsafe Call Vulnerability 区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】1.1 漏洞合约1.2 漏洞分析1.3 攻击步骤分析1.4 攻击合约 区块链安全常见的攻击合约和…

留学生交流互动系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 …

跨域请求问题

跨域请求简介 跨域请求:通过一个域的JavaScript脚本和另外一个域的内容进行交互 域的信息:协议、域名、端口号 同域:当两个域的协议、域名、端口号均相同 如下所示: 同源【域】策略:在浏览器中存在一种安全策略就是…

C++“STL之String”

​ 🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C入门 目录 ​编辑 前言 一、STL简介 1.1 STL是什么? 1.2 STL的版本(这个不是很重要了解即可) 1.3 STL的六大组件 二…

2-199基于Matlab-GUI的混合粒子群算法求解TSP问题

基于Matlab-GUI的混合粒子群算法求解TSP问题,多种路径可选,可设置微粒数目、迭代次数,动态展示路径规划过程及迭代曲线,得到叫佳的路径,输出最优路径序列及最终距离。程序已调通,可直接运行。 2-199基于Ma…

【ArcGIS Pro】完整的nc文件整理表格模型构建流程及工具练习数据分享

学术科研啥的要用到很多数据,nc文件融合了时间空间数据是科研重要文件。之前分享过怎样将nc文件处理成栅格后整理成表格。小编的读者还是有跑不通整个流程的,再来做一篇总结篇,也分享下练习数据跟工具,如果还是弄不了的&#xff0…

VM虚拟机配置ubuntu网络

目录 桥接模式 NAT模式 桥接模式 特点:ubuntu的IP地址与主机IP的ip地址不同 第一部分:VM虚拟机给ubuntu的网络适配器,调为桥接模式 第二部分:保证所桥接的网络可以上网 第三部分:ubuntu使用DHCP(默认&…

评分模型在路网通勤习惯分析中的应用——启发式搜索(2)

接上文《评分模型在路网通勤习惯分析中的应用——提出问题(1)》,本文内容主要针对上文提出的问题解决思路,详细讨论每一步骤中的具体处理措施。 4、问题的详细解决过程 4.1、对地图数据进行结构化 地图的本质是一种有向加权图结…

Lecture 17

10’s Complement Representation 主要内容: 1. 10’s 补码表示: • 10’s 补码表示法需要指定表示的数字位数(用 n 表示)。 • 表示的数字取决于 n 的位数,这会影响具体数值的解释。 2. 举例: • 如果采用 3 位补码&…

【Hackthebox 中英 Write-Up】Web Request | 分析 HTTP 请求和响应

欢迎来到我的writeup分享!我希望大家不要只关注结果或答案,而是通过耐心阅读,尝试逆向工程理解背后的运作原理。在这里,你不仅能找到解题的思路,还能学到更多与Hack The Box等平台相关的技术和技巧,期待与你…

PPT画图——如何设置导致图片为600dpi

winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…

电商项目-数据同步解决方案(三)商品上架同步更新ES索引库

一、 需求分析和业务逻辑 主要应用技术有:Feign远程调用, 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal 商品上架将商品的sku列表导入或者更新索引库。 数据监控微服务需要定义canal监听器&#x…

Unity游戏环境交互系统

概述 交互功能使用同一个按钮或按钮列表,在不同情况下显示不同的内容,按下执行不同的操作。 按选项个数分类 环境交互系统可分为两种,单选项交互,一般使用射线检测;多选项交互,一般使用范围检测。第一人…

前端正在被“锈”化

jeff Atwood 在 2007 年说:"any application that can be writen in JavaScript , willeventually be written in JavaScript",翻译过来就是:“任何可以使用 JavaScript 来编写的应用,并最终也会由 JavaScript 编写”&a…