Python中的putText函数详解

在图像处理中,我们常常需要在图片上添加文字内容,以便更好地展示图片的相关信息。Python的OpenCV库中提供了putText函数,可以用于在图像上绘制文字。本文将详细介绍putText函数的用法,并通过代码示例演示具体的应用。

putText函数的基本用法

putText函数的基本用法如下:

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

其中,参数的含义如下:

  • img:要绘制文本的图像。
  • text:要绘制的文本内容。
  • org:文本在图像上的起始坐标。
  • fontFace:字体类型。
  • fontScale:字体的大小因子。
  • color:文本的颜色。
  • thickness:文本的粗细程度。
  • lineType:线的类型。
  • bottomLeftOrigin:坐标原点是否在图像左下角。

文本位置和对齐方式

在OpenCV中,文本的位置由参数org指定,它是文本在图像上的起始坐标。可以通过设置org参数来控制文本在图像上的位置。例如,如果将org参数设置为(10, 50),则表示文本起始坐标为图像的(10, 50)位置。

同时,可以通过设置fontFace和fontScale参数来控制文本的大小和字体。fontFace参数可以是以下常用的字体类型:

  • 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
import numpy as np

# 创建一张空白图像
img = np.zeros((300, 500, 3), np.uint8)

# 设置文本参数
text = "Hello, World!"
org = (50, 150)
fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 2
color = (0, 255, 0)
thickness = 2
lineType = cv2.LINE_AA
bottomLeftOrigin = False

# 绘制文本
cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)

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

上述代码中,我们首先创建了一张空白的图像,然后定义了要绘制的文本内容和文本的参数。最后,调用putText函数在图像上绘制文本,并通过imshow函数显示绘制后的图像。

文本样式和颜色

除了控制文本的位置和对齐方式外,我们还可以通过设置文本的样式和颜色来使文本更加美观。

在putText函数中,可以通过设置thickness参数来控制文本的粗细程度。当thickness为正数时,表示文本为实心;当thickness为负数时,表示文本为空心。

同时,可以通过设置color参数来控制文本的颜色。color参数是一个三元组,表示文本颜色的BGR值。例如,(0, 255, 0)表示绿色。

下面的代码示例演示了如何设置文本的样式和颜色:

import cv2
import numpy as np

# 创建一张空白图像
img = np.zeros((300, 500, 3), np.uint8)

# 设置文本参数
text = "Hello, World!"
org = (50, 150)
fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 2
color = (0, 255, 0)
thickness = 3
lineType = cv2.LINE_AA
bottom