Python OpenCV 绘制文字 putText

1. 参数简介

查到的文章过于辣鸡决定自己写个笔记

cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)
'''
img: 绘制文字的图像源
text: 需要绘制的文字
org: 文字坐标(一堆乱写左上角的, 不过也不完全是左下角, 后面给测试)
fontFace: 字体
fontScale: 字号(double)
color: 颜色
thickness: 粗细(int)
lineType: 线条类型
bottomLeftOrigin: 默认是 False, 设为 True 文字会上下颠倒(官方解释是图像坐标原点是否在左下角)
'''

2. 文字坐标

测试代码:

import cv2
import numpy as np

text = 'abcdefghijklmnopqrstuvwxyz'
img = 255 * np.ones((35, 20*26, 3), np.uint8)

cv2.putText(img, text, (0, 25), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 0), 1, cv2.LINE_AA, bottomLeftOrigin = False)

cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

测试结果:
(1)(0, 0)
在这里插入图片描述
(2)(0, 35)
在这里插入图片描述
(3)(0, 25)
在这里插入图片描述
  很明显,合适的文字坐标需要一定的尝试,而且不同文字和字体高度宽度不太一样。
  另外,OpenCV里大多数绘制的坐标都是按(x, y)设定的,但是图像为numpy数组在索引的时候是(h, w)也就是(y, x)
(4)(0, 10), bottomLeftOrigin = True
在这里插入图片描述
  图像坐标原点设在左下角,但是坐标轴依然是从上往下的,坐标要改到10

3. 字体

  给出不同字体的样式以及在字号为1时的字体高度H和适合的Y坐标,字号变化时等比调整H和Y即可,序号为字体对应的int

(0)cv2.FONT_HERSHEY_SIMPLEX
  H:35,Y:25
在这里插入图片描述

(1)cv2.FONT_HERSHEY_PLAIN
  H:20,Y:15
在这里插入图片描述

(2)cv2.FONT_HERSHEY_DUPLEX
  H:35,Y:25
在这里插入图片描述

(3)cv2.FONT_HERSHEY_COMPLEX
  H:35,Y:25
在这里插入图片描述

(4)cv2.FONT_HERSHEY_TRIPLEX
  H:35,Y:25
在这里插入图片描述

(5)cv2.FONT_HERSHEY_COMPLEX_SMALL
  H:23,Y:15
在这里插入图片描述

(6)cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
  H:40,Y:25
在这里插入图片描述

(7)cv2.FONT_HERSHEY_SCRIPT_COMPLEX
  H:40,Y:25
在这里插入图片描述

(16)cv2.FONT_ITALIC
  官方文档说是斜体,但是直接用和(0)cv2.FONT_HERSHEY_SIMPLEX 一样,可能用法有问题。

猜你喜欢

转载自blog.csdn.net/weixin_43605641/article/details/120289783