首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >『OpenCV-Python』绘制文字(中文)

『OpenCV-Python』绘制文字(中文)

作者头像
德育处主任
发布2026-07-04 08:08:18
发布2026-07-04 08:08:18
540
举报

推荐 《OpenCV-Python专栏》

绘制文字(数字和英文)

OpenCV 提供了 cv2.putText() 方法,可以方便地在图像上绘制文本。

cv2.putText() 的基本用法:

代码语言:javascript
复制
cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType)
  • img:目标图像。
  • text:要绘制的文字。
  • org:文字左下角的起始坐标。
  • fontFace:字体类型(如 cv2.FONT_HERSHEY_SIMPLEX)。fontFace 可传入的字体类型 OpenCV 也提供了选项:
    • cv2.FONT_HERSHEY_SIMPLEX:无衬线字体(常用)。
    • cv2.FONT_HERSHEY_PLAIN:简单无衬线字体。
    • cv2.FONT_HERSHEY_DUPLEX:双线无衬线字体。
    • cv2.FONT_HERSHEY_COMPLEX:衬线字体。
    • cv2.FONT_HERSHEY_TRIPLEX:三线衬线字体。
    • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX:手写字体。
    • cv2.FONT_HERSHEY_SCRIPT_COMPLEX:复杂手写字体。
  • fontScale:字体大小比例。
  • color:文字颜色,格式为 (B, G, R)。
  • thickness:文字线条粗细。
  • lineType:线型,如 cv2.LINE_AA。

举个例子

01.png
01.png
代码语言:javascript
复制
import cv2
import numpy as np

# 创建空白图像
img = np.zeros((400, 400, 3), dtype=np.uint8)
img.fill(255)  # 将背景设置为白色

# 绘制不同样式的文字
cv2.putText(img, "Hello OpenCV!", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)  # 黑色简单字体
cv2.putText(img, "Hello OpenCV!", (50, 100), cv2.FONT_HERSHEY_DUPLEX, 1, (255, 0, 0), 2)  # 蓝色粗体
cv2.putText(img, "Hello OpenCV!", (50, 150), cv2.FONT_ITALIC, 1, (0, 255, 0), 2)  # 绿色斜体
cv2.putText(img, "Hello OpenCV!", (50, 200), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA)  # 红色复杂字体,抗锯齿

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

绘制中文

OpenCV 默认只支持绘制英文字母、数字和常见标点符号,无法直接绘制中文。

如果需要在图像上绘制中文,通常需要结合第三方库如 PIL 或使用自定义字体文件。

本文给出的方案是引入一个本地的中文字体包。我使用的是Mac自带的中文字体 Hiragino Sans GB.ttc。

将字体文件放到项目目录中(放其他地方也行,只要你能通过 ImageFont.truetype("字体路径") 找到字体文件就行。

02.png
02.png
代码语言:javascript
复制
from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np

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

# 转换为 PIL 图像
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

# 使用 PIL 绘制中文
draw = ImageDraw.Draw(pil_img)
font = ImageFont.truetype("Hiragino Sans GB.ttc", 40)  # 替换为你的字体路径
draw.text((50, 100), "雷猴", font=font, fill=(255, 255, 255))

# 转换回 OpenCV 图像
img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)

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

点赞 + 关注 + 收藏 = 学会了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 绘制文字(数字和英文)
  • 绘制中文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档