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

使用 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.kler.cn/a/456513.html

相关文章:

  • linux--编译驱动模块【虚拟网卡 tun】
  • 《Java核心技术 卷II》流的创建
  • uniapp——APP读取bin文件,解析文件的数据内容(二)
  • 设计模式-创建型-单例模式
  • VSCode outline显示异常的解决方法——清除VSCode的配置和用户文件
  • 抽象工厂设计模式的理解和实践
  • 导师让你给实验室搭服务器?不会?我教你
  • jangow-01-1.0.1
  • Java 中 Stream 流的使用详解
  • Linux下shell基本命令之vi用法及示例
  • AI for Science
  • 如何在鸿蒙本地模拟器中使用HDC工具
  • JAVA学习笔记第二阶段开始 Day11 五种机制---机制1:泛型机制
  • Java和Go语言的优劣势对比
  • DVWA靶场搭建及错误解决教程
  • SQL 基础教程
  • 音视频学习(二十八):websocket-flv
  • 攻防世界web第二题unseping
  • leetcode刷题——动态规划(2)
  • Vue使用Tinymce 编辑器
  • 《机器学习》数据预处理简介
  • 2024第一届Solar杯应急响应挑战赛wp
  • Blazor开发中注册功能设计研究
  • 阿里云 安全组设置 仍失效问题 解决方案
  • 欢迪迈手机商城设计与实现基于(代码+数据库+LW)
  • CCF-GESP 等级考试 2023年12月认证C++三级真题解析