gpt4 book ai didi

python - OpenCV 的 `getTextSize` 和 `putText` 返回错误的大小和像素较低的字母

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:35 26 4
gpt4 key购买 nike

我有以下 Python 代码:

FONT = cv2.FONT_HERSHEY_SIMPLEX
FONT_SCALE = 1.0
FONT_THICKNESS = 2
bg_color = (255, 255, 255)
label_color = (0, 0, 0)

label = 'Propaganda'
label_width, label_height = cv2.getTextSize(label, FONT, FONT_SCALE, FONT_THICKNESS)[0]
label_patch = np.zeros((label_height, label_width, 3), np.uint8)
label_patch[:,:] = bg_color

我创建了一个新的空白图像,其大小由 getTextSize 返回,然后,根据文档,我在左下角添加了文本,即 x = 0, y = (height - 1) 并使用与 getTextSize

相同的字体、比例和粗细参数
cv2.putText(label_patch, label, (0, label_height - 1), FONT, FONT_SCALE, label_color, FONT_THICKNESS)

但是当我在图像 label_patch 上使用 imshowimwrite 时,这是我得到的结果:

enter image description here

很容易看出小写的p和小写的g在中间被截断了,这样ga 甚至无法区分。如何使 OpenCV 的 getTextSize 返回正确的大小,以及如何使 OpenCV 的 putText 从实际最低点开始绘制文本?

最佳答案

找到了我的问题的解决方案,所以在这里分享。

原来getTextSize返回的还有一个参数,就是baseline。创建盒子时应该已经考虑到:盒子高度应该是label_height + baseline:

(label_width, label_height), baseline = cv2.getTextSize(label, FONT, FONT_SCALE, FONT_THICKNESS)
label_patch = np.zeros((label_height + baseline, label_width, 3), np.uint8)
label_patch[:,:] = bg_color

现在,在与之前相同的点添加文本,这意味着基线像素将保持在下方(该点实际上已经向下移动了一个像素,正如@api55 所建议的那样):

cv2.putText(label_patch, label, (0, label_height), FONT, FONT_SCALE, label_color, FONT_THICKNESS)

结果:

enter image description here

关于python - OpenCV 的 `getTextSize` 和 `putText` 返回错误的大小和像素较低的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com