📜  cv2 添加文本 - Python (1)

📅  最后修改于: 2023-12-03 15:30:13.790000             🧑  作者: Mango

cv2 添加文本 - Python

在图像处理过程中,我们有时候需要在图像上添加一些文字来说明,如图像的标题、注释等。cv2提供了添加文本的方法,下面介绍一下cv2添加文本的几种方式。

1. cv2.putText()

使用cv2.putText()可以在图像中添加文本。该函数的语法如下:

cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
  • img: 要添加文本的图像
  • text: 要添加的文本内容
  • org: 文本的起始坐标点,坐标点为左下角
  • fontFace: 字体类型
  • fontScale: 字体缩放比例
  • color: 字体颜色
  • thickness: 字体线条宽度
  • lineType: 连接线类型
  • bottomLeftOrigin: 坐标点是否为左下角
import cv2
import numpy as np

# 创建一个空的图像
img = np.zeros((512,512,3), np.uint8)

# 添加文本
cv2.putText(img, 'OpenCV', (10,500), cv2.FONT_HERSHEY_SIMPLEX, 4, (255,255,255), 2, cv2.LINE_AA)

# 显示图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出的图像如下:

cv2_text_1

2. PIL.ImageDraw.Draw.text()

使用PIL库中的ImageDraw.Draw.text()方法也可以添加文本。该方法的语法如下:

PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align='left')
  • xy: 文本的起始坐标点,坐标点为左上角
  • text: 要添加的文本内容
  • fill: 字体颜色
  • font: 字体类型和大小
  • anchor: 对齐方式
  • spacing: 字符间距
  • align: 水平对齐方式
from PIL import Image, ImageDraw, ImageFont

# 创建一个空的图像
img = Image.new('RGB', (512,512), (0, 0, 0))

# 获取字体
font_path = 'arial.ttf'
font = ImageFont.truetype(font_path, 100)

# 添加文本
draw = ImageDraw.Draw(img)
draw.text((50, 50), 'OpenCV', (255, 255, 255), font=font)

# 显示图像
img.show()

输出的图像如下:

cv2_text_2

3. matplotlib.pyplot.text()

使用matplotlib库中的pyplot.text()方法也可以添加文本。该方法的语法如下:

matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
  • x: 文本起始坐标点的x轴位置
  • y: 文本起始坐标点的y轴位置
  • s: 要添加的文本内容
  • fontdict: 字体类型和大小
import matplotlib.pyplot as plt

# 创建一个空的图像
fig, ax = plt.subplots()
ax.imshow(np.zeros((512, 512, 3), dtype=np.uint8))

# 添加文本
ax.text(100, 100, 'OpenCV', fontsize=20, color='white')

# 显示图像
plt.show()

输出的图像如下:

cv2_text_3

哪种方法更好要根据实际需求和个人喜好来选择。