前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CV 向】OpenCV 图形绘制指南

【CV 向】OpenCV 图形绘制指南

作者头像
繁依Fanyi
发布2023-10-12 10:03:00
4610
发布2023-10-12 10:03:00
举报
文章被收录于专栏:繁依Fanyi 的专栏

引言

Python OpenCV 是一个功能强大的计算机视觉库,除了图像处理和计算机视觉任务外,它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中标记感兴趣区域,还是在图像上绘制几何形状或文本,OpenCV 都为我们提供了简单易用的方法。本文将介绍如何利用 Python OpenCV 进行图形绘制。

1. 创建画布

在开始图形绘制之前,我们首先需要创建一个空白的画布。在 OpenCV 中,我们可以使用 cv2.imread() 函数加载图像,或使用 np.zeros() 创建一个空白的图像作为画布。

示例代码:

代码语言:javascript
复制
import cv2
import numpy as np

# 创建一张空白的画布
canvas = np.zeros((500, 500, 3), dtype=np.uint8)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 np.zeros() 函数创建了一个形状为 (500, 500, 3) 的零数组,表示画布的宽度、高度和通道数。然后,我们使用 cv2.imshow() 函数显示画布。

在这里插入图片描述
在这里插入图片描述

2. 绘制线段

绘制线段是图形绘制中的基本操作之一。在 OpenCV 中,我们可以使用 cv2.line() 函数绘制线段。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制一条线段
start_point = (100, 100)
end_point = (400, 400)
color = (0, 0, 255)  # 红色线段
thickness = 3

cv2.line(canvas, start_point, end_point, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.line() 函数在画布上绘制了一条从 (100, 100) 到 (400, 400) 的红色线段。我们还可以通过调整 thickness 参数来设置线段的粗细。

在这里插入图片描述
在这里插入图片描述

3. 绘制矩形

绘制矩形是常见的图形绘制操作之一。在 OpenCV 中,我们可以使用 cv2.rectangle() 函数绘制矩形。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制一个矩形
top_left = (200, 200)
bottom_right = (400, 400)
color = (0, 255, 0)  # 绿色矩形
thickness = 2

cv2.rectangle(canvas, top_left, bottom_right, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.rectangle() 函数在画布上绘制了一个从 (200, 200) 到 (400, 400) 的绿色矩形。我们可以通过调整 thickness 参数来设置矩形的边框粗细。

在这里插入图片描述
在这里插入图片描述

4. 绘制圆

绘制圆形也是常见的图形绘制操作之一。在 OpenCV 中,我们可以使用 cv2.circle() 函数绘制圆形。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制一个圆形
center = (300, 300)
radius = 100
color = (255, 0, 0)  # 蓝色圆形
thickness = -1  # 填充圆形

cv2.circle(canvas, center, radius, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.circle() 函数在画布上绘制了一个以 (300, 300) 为圆心、半径为 100 的蓝色填充圆形。我们可以通过调整 thickness 参数来设置圆形的边框粗细,负值表示填充圆形。

在这里插入图片描述
在这里插入图片描述

5. 绘制椭圆

绘制椭圆也是常见的图形绘制操作之一。在 OpenCV 中,我们可以使用 cv2.ellipse() 函数绘制椭圆。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制一个椭圆
center = (250, 250)
axes = (150, 100)
angle = 0
start_angle = 0
end_angle = 360
color = (0, 255, 255)  # 黄色椭圆
thickness = 2

cv2.ellipse(canvas, center, axes, angle, start_angle, end_angle, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.ellipse() 函数在画布上绘制了一个以 (250, 250) 为中心、长轴为 150、短轴为 100 的黄色椭圆。我们可以通过调整 thickness 参数来设置椭圆的边框粗细。

在这里插入图片描述
在这里插入图片描述

6. 绘制多边形

绘制多边形是绘制复杂形状的常见操作。在 OpenCV 中,我们可以使用 cv2.polylines() 函数绘制多边形。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制一个多边形
points = np.array([[100, 100], [200, 50], [300, 150], [250, 200]], np.int32)
points = points.reshape((-1, 1, 2))
color = (255, 255, 0)  # 青色多边形
thickness = 2

cv2.polylines(canvas, [points], True, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.polylines() 函数在画布上

绘制了一个由多个顶点构成的青色多边形。points 是一个包含多个顶点坐标的数组,我们可以根据需要添加更多的顶点。我们可以通过调整 thickness 参数来设置多边形的边框粗细。

在这里插入图片描述
在这里插入图片描述

7. 绘制字体

在图形绘制中,有时需要在图像上添加文本标签。在 OpenCV 中,我们可以使用 cv2.putText() 函数在图像上绘制文本。

示例代码:

代码语言:javascript
复制
import cv2

# 在画布上绘制文本
text = 'OpenCV'
position = (200, 250)
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1.5
color = (255, 255, 255)  # 白色文本
thickness = 2

cv2.putText(canvas, text, position, font, font_scale, color, thickness)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述代码中,我们使用 cv2.putText() 函数在画布上绘制了一个白色文本 “OpenCV”,位于 (200, 250) 的位置。我们可以通过调整 font_scale 参数来设置文本的大小,通过调整 thickness 参数来设置文本的粗细。

在这里插入图片描述
在这里插入图片描述

结论

通过本文的介绍,我们了解了如何使用 Python OpenCV 进行图形绘制。我们可以创建一个画布,并利用 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText() 函数绘制线段、矩形、圆形、椭圆、多边形和文本。这些图形绘制操作在计算机视觉任务和图像处理中非常有用。希望本文能够帮助您掌握 Python OpenCV 的图形绘制功能,并在实际项目中应用它们。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 1. 创建画布
  • 2. 绘制线段
  • 3. 绘制矩形
  • 4. 绘制圆
  • 5. 绘制椭圆
  • 6. 绘制多边形
  • 7. 绘制字体
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档