You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV-Python如何设置文本字体大小为指定像素值?

OpenCV-Python 精确控制文本像素高度的方法

OpenCV的cv2.putText()默认通过fontScale(相对比例)控制文本大小,无法直接指定绝对像素高度。要实现精确到指定L px的文本显示,核心是通过cv2.getTextSize()测量基准尺寸,再反推对应参数,具体步骤如下:

  • 确定目标像素高度L(比如20px),选定目标字体(如cv2.FONT_HERSHEY_PLAIN)
  • 以fontScale=1、thickness=1调用cv2.getTextSize(),获取该字体在默认比例下的文本高度
  • 计算缩放比例scale = L / 基准高度,这个比例就是让文本高度达到L px的对应参数
  • 如需调整线条粗细,直接修改thickness即可(该参数仅改变笔画粗细,不影响文本整体高度)

示例代码

import cv2
import numpy as np

# 目标文本像素高度
target_height = 20
# 要显示的文本
text = "Sample Text"
# 选定字体
font = cv2.FONT_HERSHEY_PLAIN

# 获取基准尺寸(fontScale=1,thickness=1时的文本高度)
(text_width, text_height), baseline = cv2.getTextSize(text, font, 1, 1)
# 计算所需fontScale
font_scale = target_height / text_height
# 设置线条粗细
thickness = 2

# 创建测试图像
img = np.zeros((100, 350, 3), dtype=np.uint8)
# 绘制文本
cv2.putText(img, text, (30, 60), font, font_scale, (255, 255, 255), thickness)

# 验证实际高度
(actual_width, actual_height), _ = cv2.getTextSize(text, font, font_scale, thickness)
print(f"目标高度: {target_height}px, 实际高度: {actual_height}px")

cv2.imshow("Precise Text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意事项

  • cv2.getTextSize()返回的高度是文本实际绘制高度(不含基线偏移),用该值计算的缩放比例能精准匹配目标高度
  • 不同字体的基准高度存在差异,必须针对选定字体单独计算fontScale
  • thickness仅影响笔画粗细,不会改变文本整体高度,调整粗细无需重新计算比例

内容的提问来源于stack exchange,提问作者Arnav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:30:59