返回

用 Python OpenCV2 在图像上写出精彩文字

windows

用 Python OpenCV2 轻松在图像上书写文本

在图像处理中,为图像添加文本信息往往是必不可少的,它可以丰富内容或突出关键信息。借助 OpenCV2 库,这项任务变得轻而易举,本文将为你提供详细的指南。

字体类型之谜

使用 OpenCV2 的 putText() 函数时,你可能会遇到一个问题:无法识别 CV_FONT_HERSHEY_SIMPLEX 字体类型。这是因为此常量仅适用于 C++ 版本,在 Python 版本中不存在。

Python OpenCV2 中的字体类型

在 Python OpenCV2 中,字体类型应使用以下格式指定:

font = cv2.FONT_HERSHEY_SIMPLEX

你可以使用以下常量指定其他字体类型:

  • cv2.FONT_HERSHEY_PLAIN
  • cv2.FONT_HERSHEY_DUPLEX
  • cv2.FONT_HERSHEY_COMPLEX
  • cv2.FONT_HERSHEY_TRIPLEX
  • cv2.FONT_HERSHEY_COMPLEX_SMALL
  • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
  • cv2.FONT_HERSHEY_SCRIPT_COMPLEX

示例代码

以下代码展示了如何在图像上书写文本:

import cv2

# 加载图像
image = cv2.imread("image.jpg")

# 设置字体类型和大小
font = cv2.FONT_HERSHEY_SIMPLEX
font_size = 2

# 设置文本位置和颜色
x = 10
y = 30
color = (255, 0, 0)  # 蓝色

# 在图像上书写文本
cv2.putText(image, "Hello World!!!", (x, y), font, font_size, color, 2)

# 显示图像
cv2.imshow("Image with Text", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

其他技巧

  • 使用 fontScale 调整字体大小。
  • 使用 thickness 调整字体粗细。
  • 使用 lineType 设置线条类型(例如,cv2.LINE_AA 用于抗锯齿)。

常见问题解答

Q1:我可以使用自定义字体吗?
A1:可以,但需要使用 cv2.freetype.putText() 函数,因为它支持自定义字体。

Q2:如何设置文本背景颜色?
A2:使用 cv2.rectangle() 函数绘制一个矩形背景,然后在该背景上书写文本。

Q3:如何在圆形区域内书写文本?
A3:使用 cv2.circle() 函数绘制一个圆形区域,然后使用 cv2.putText() 函数在该区域内书写文本。

Q4:如何旋转文本?
A4:使用 cv2.getRotationMatrix2D() 函数获得旋转矩阵,然后使用 cv2.warpAffine() 函数旋转文本。

Q5:如何在图像上写出表情符号?
A5:将表情符号编码为 Unicode 字符,然后使用 putText() 函数将其写入图像。

结论

利用 OpenCV2 在图像上书写文本是一种简单而强大的方式,可以增强图像的可读性和信息量。通过掌握本文提供的技巧,你将能够在图像处理项目中轻松添加文本注释,从而提升视觉效果和信息清晰度。