在圆圈OpenCV中绘制文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在圆圈OpenCV中绘制文本相关的知识,希望对你有一定的参考价值。

有没有方便的方法将文本直接绘制到OpenCV圈中?在Google中没有找到任何类似的答案。

如果我只是使用circle的Centroid_X和Centroid_Y作为putText,我会得到如下图所示的内容,但我希望Text完全适合圆圈,并且找不到任何优雅的方式在圆圈内绘制文本。

cv2.putText(frame, text, (cX, cY), FONT, 1.5, TEXT_COLOUR, int(TEXT_THICKNESS), cv2.LINE_AA)

enter image description here

答案

出现问题的原因是,给予cv2.putText的位置定义了原点(适合绘制文本的矩形区域的左下角)。

为了使文本以某个给定点为中心,首先需要测量该矩形区域(边界框)的大小。这可以使用函数cv2.getTextSize完成。

现在,要使文本居中,原点需要向下移动一定高度的边框,并向左移动边界框宽度的一半。

text_origin = (CENTER[0] - text_size[0] / 2, CENTER[1] + text_size[1] / 2)

码:

import cv2
import numpy as np


img = np.zeros((128, 128, 3), dtype=np.uint8)

CENTER = (64, 64)

cv2.circle(img, CENTER, 48, (127,0,127), -1)

TEXT_FACE = cv2.FONT_HERSHEY_DUPLEX
TEXT_SCALE = 1.5
TEXT_THICKNESS = 2
TEXT = "0"

text_size, _ = cv2.getTextSize(TEXT, TEXT_FACE, TEXT_SCALE, TEXT_THICKNESS)
text_origin = (CENTER[0] - text_size[0] / 2, CENTER[1] + text_size[1] / 2)

cv2.putText(img, TEXT, text_origin, TEXT_FACE, TEXT_SCALE, (127,255,127), TEXT_THICKNESS, cv2.LINE_AA)

cv2.imwrite('centertext_out.png', img)

输出图像:

以上是关于在圆圈OpenCV中绘制文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 保存图像的问题?

D3 围绕一组圆圈绘制一个外壳

在 OpenCV 中检测半圆

现有圆圈上的曲线文本

如何重新加载圆形进度条

Raphael js 文本定位:将文本居中在一个圆圈中