『opencv-380玩彩网官网入口

点赞 关注 收藏 = 学会了

推荐

绘制文字(数字和英文)

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

cv2.puttext() 的基本用法:

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。

举个例子

『opencv-python』绘制文字

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("字体路径") 找到字体文件就行。

『opencv-python』绘制文字

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()

点赞 关注 收藏 = 学会了

本作品采用《cc 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图