使用 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(),你都可以轻松自定义图形的颜色、位置和大小,这对于各种图像处理应用非常有用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【每日学点鸿蒙知识】上架流程、h5返回收拾拦截、两个枚举类型之间转换、hvigorw命令、绘制本地图片

1、HarmonyOS 上架流程? 上架流程,请参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-publish-app-V5 上架的一些条件,也请 这边悉知,参考链接:https://developer.huawe…

使用腾讯云CVM搭建 K8s + Docker + Harbor :部署SpringBoot应用与配置指南

在现代云原生应用的开发和部署过程中,容器化技术已经成为主流,而 Kubernetes(K8s)则是容器编排的绝对领导者。为了高效地管理和分发容器镜像,拥有一个可靠的私有镜像仓库是每个开发者和运维工程师不可或缺的工具。Dock…

第5章 组合计数与离散概率

2024年12月25日 5.1 基本原理 5.1.1 加法原理 5.1.2 乘法原理 5.2 排列与组合 5.2.1 排列 5.2.2 组合 5.3 排列组合生成算法 5.3.1 排列生成算法 5.3.2 组合生成算法 5.4 广义的排列和组合 5.5 二项式系数和组合恒等式 5.5.1 二项式定理 5.5.2 组合恒等式 5.6 鸽笼…

oscp备战系列-Kioptrix2014

文章目录 一、信息收集二、漏洞探测三、漏洞利用四、后渗透 一、信息收集 主机探测 nmap 192.168.30.0/24 -sP端口及版本探测 nmap 192.168.30.199 -sV可以看到开放了80,8080端口,采用apache 2.2.21 mod_ssl2.2.21 openssl0.9.8q WebDAV2 php5.3.8 O…

sqli-labs关卡记录13

同样还是post型,按照常规的方法,抓包,找到注入点: updatexml(1,concat(0x7e,substr((select group_concat(username,password)from users),31,30),0x7e),1)-- 这里找到注入点,闭合方式为)类型,然后就是判断…

操作系统(23)外存的存储空间的管理

一、外存的基本概念与特点 定义:外存,也称为辅助存储器,是计算机系统中用于长期存储数据的设备,如硬盘、光盘、U盘等。与内存相比,外存的存储容量大、成本低,但访问速度相对较慢。特点:外存能够…

matrix-breakout-2-morpheus

将这一关的镜像导入虚拟机,出现以下页面表示导入成功 以root身份打开kali终端,输入以下命令,查看靶机ip arp-scan -l 根据得到的靶机ip,浏览器访问进入环境 我们从当前页面没有得到有用的信息,尝试扫描后台 发现有一个…

最新的强大的文生视频模型Pyramid Flow 论文阅读及复现

《PYRAMIDAL FLOW MATCHING FOR EFFICIENT VIDEO GENERATIVE MODELING》 论文地址:2410.05954https://arxiv.org/pdf/2410.05954 项目地址: jy0205/Pyramid-Flow: 用于高效视频生成建模的金字塔流匹配代码https://github.com/jy0205/Pyram…

RSICV国产芯片之CHV208

1. 芯片选型分析的对比维度 分析或者对标应用的芯片替代思路 1.1 内核/主频/存储空间支持 内核能力/指令集支持(考虑工具链兼容性); 主频:对比计算能力是否满足基本要求 存储:内存--数据搬移空间决定数据运算的…

7. petalinux 根文件系统配置(package group)

根文件系统配置(Petalinux package group) 当使能某个软件包组的时候,依赖的包也会相应被使能,解决依赖问题,在配置页面的help选项可以查看需要安装的包 每个软件包组的功能: packagegroup-petalinux-audio包含与音…

基于Spring Boot的个人健康管理系统

一、系统背景与意义 随着现代生活节奏的加快和人们健康意识的日益增强,个人健康管理成为了人们关注的焦点。然而,传统的健康管理方式往往依赖于纸质记录、定期体检等手段,不仅效率低下,而且难以实现对健康数据的持续跟踪和深入分…

上手教程:使用Terraform打造弹性VPC架构

最近Akamai发布的虚拟专用云(VPC)功能提供了一种隔离的网络,让云资源可以用私密的方式进行通信。 关于Akamai VPC功能,最棒的地方在于它有着极高的灵活性。用户可以通过Cloud Manager、开发人员工具(如CLI&#xff09…

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释: …

【论文复现】进行不同视角图像的拼接

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 进行不同视角图像的拼接 背景描述算法简介SIFT算法原理代码原理代码部署核心代码拼接结果其他的图片如何进行拼接? 修改内容&…

xxl-job 简单的入门到实战

本文是参考官方文档自己实践一次,纯享版,大致也是作者边写博客边去跟着官方文档实现 一、前期准备 1、官网地址 GitHub地址: GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB&…

数字后端培训项目Floorplan常见问题系列专题续集1

今天继续给大家分享下数字IC后端设计实现floorplan阶段常见问题系列专题。这些问题都是来自于咱们社区IC后端训练营学员提问的问题库。目前这部分问题库已经积累了4年了,后面会陆续分享这方面的问题。 希望对大家的数字后端学习和工作有所帮助。 数字后端项目Floor…

江苏捷科云:可视化平台助力制造企业智能化管理

公司简介 江苏捷科云信息科技有限公司(以下简称“捷科”)是一家专注于云平台、云储存、云管理等产品领域的创新型企业,集研发、生产和销售于一体,致力于在网络技术领域打造尖端品牌。在推动制造业企业数字化转型的进程中&#xf…

【视觉惯性SLAM:对极几何】

对极几何(Epipolar Geometry)介绍 对极几何是立体视觉中的核心内容之一,它描述了两个相机在观察同一个三维场景时,成像平面之间的几何关系。对极几何能够约束图像中对应点的位置关系,是双目立体匹配、三维重建、以及位…

从Condition开始,回顾AQS

Synchronized和Reentrantlock的挂起逻辑 synchronized中有两个核心的结构 EntryList cxq:等待拿锁的线程存储位置Waitset:被执行wait方法的线程存储位置 流转: 线程获取锁资源失败,扔到EntryList cxq线程持有锁资源&#x…

umi : 无法加载文件 D:\software\nodejs\node_global\umi.ps1,因为在此系统上禁止运行脚本。

问题详情 2、解决方法 1.使用命令 get-ExecutionPolicy查看 显示Restricted:限制 所以要给权限 2. 使用命令:Set-ExecutionPolicy -Scope CurrentUser 3. 会提示为参数提供值 4. 输入: RemoteSigned 具体如下图所示,成功解决。 报…