问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenCV基础:绘制基本图形

创作时间:
作者:
@小白创作中心

OpenCV基础:绘制基本图形

引用
CSDN
1.
https://blog.csdn.net/u011186532/article/details/145133180

OpenCV是一个功能强大的开源计算机视觉库,广泛应用于图像处理和计算机视觉任务。掌握OpenCV的基本图形绘制功能是学习图像处理的重要一步。本文将通过详细的代码示例,介绍如何使用OpenCV在图像上绘制直线、矩形、圆形、椭圆、多边形以及文字。

1. 画线

使用cv2.line函数可以在图像上绘制直线。

API:

cv2.line(image, pt1, pt2, color, thickness)

参数说明:

  • image: 目标图像。
  • pt1: 线段起点,格式为 (x, y)
  • pt2: 线段终点,格式为 (x, y)
  • color: 线条颜色,格式为 (B, G, R)
  • thickness: 线条的粗细,默认值为 1

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一条白色的直线
cv2.line(image, (50, 50), (350, 350), (255, 255, 255), thickness=2)

# 显示结果
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

2. 画矩形

使用cv2.rectangle函数可以在图像上绘制矩形。

API:

cv2.rectangle(image, pt1, pt2, color, thickness)

参数说明:

  • pt1: 矩形左上角坐标 (x, y)
  • pt2: 矩形右下角坐标 (x, y)
  • thickness: 正值表示矩形边框的粗细,负值表示填充整个矩形。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个绿色矩形
cv2.rectangle(image, (100, 100), (300, 200), (0, 255, 0), thickness=3)

cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

3. 画圆

使用cv2.circle函数可以在图像上绘制圆形。

API:

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

参数说明:

  • center: 圆心坐标 (x, y)
  • radius: 圆的半径。
  • thickness: 正值表示圆的边框粗细,负值表示填充整个圆。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个蓝色圆
cv2.circle(image, (200, 200), 50, (255, 0, 0), thickness=-1)

cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

4. 画椭圆

使用cv2.ellipse函数可以在图像上绘制椭圆。

API:

cv2.ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness)

参数说明:

  • center: 椭圆中心点 (x, y)
  • axes: 椭圆的长轴和短轴长度 (major_axis, minor_axis)
  • angle: 椭圆的旋转角度(以度为单位)。
  • startAngleendAngle: 椭圆弧的起始和终止角度。
  • thickness: 正值表示椭圆边框粗细,负值表示填充整个椭圆。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个红色椭圆
cv2.ellipse(image, (200, 200), (100, 50), 45, 0, 360, (0, 0, 255), thickness=2)

cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果:

5. 画多边形

使用cv2.polylines函数可以在图像上绘制多边形。

API:

cv2.polylines(image, pts, isClosed, color, thickness)

参数说明:

  • pts: 多边形的顶点集合,格式为 np.array([[x1, y1], [x2, y2], ...], dtype=np.int32)
  • isClosed: 布尔值,是否闭合多边形。
  • color: 多边形边框的颜色。
  • thickness: 边框的粗细。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 定义多边形顶点
points = np.array([[150, 150], [250, 150], [300, 250], [200, 300]], dtype=np.int32)

# 绘制多边形
cv2.polylines(image, [points], isClosed=True, color=(255, 255, 0), thickness=2)

cv2.imshow("Polygon", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

6. 绘制字体

使用cv2.putText函数可以在图像上绘制文本。

API:

cv2.putText(image, text, org, fontFace, fontScale, color, thickness, lineType)

参数说明:

  • text: 要绘制的字符串。
  • org: 文本的左下角坐标 (x, y)
  • fontFace: 字体类型,常用值包括:
  • cv2.FONT_HERSHEY_SIMPLEX: 普通字体。
  • cv2.FONT_HERSHEY_COMPLEX: 复杂字体。
  • fontScale: 字体的缩放比例。
  • thickness: 字体的粗细。
  • lineType: 线条类型(如 cv2.LINE_AA 表示抗锯齿线条)。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制文本
cv2.putText(image, "OpenCV Hello World", (50, 350), cv2.FONT_HERSHEY_SIMPLEX,
            fontScale=1, color=(255, 255, 255), thickness=2, lineType=cv2.LINE_AA)

cv2.imshow("Text", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号