python - 如何使用 OpenCV2 在带有黑色边框的图像上显示白色文本?

标签 python opencv

我有以下代码行可以将文本放在图像上,但在大多数情况下都无法辨认。如何使文本变白但文本周围有黑色边框?

cv2.putText(img=image_in, text=traffic_light_state, org=(center[0] + 50, center[1]),
            fontFace=cv2.FONT_HERSHEY_COMPLEX , fontScale=1, color=[255, 255, 255], lineType=cv2.CV_AA, thickness=2)

最佳答案

我在代码中的做法是绘制相同的文本两次。一次是双倍粗细的轮廓颜色(根据您的喜好调整),然后一次是文本颜色。

cv2.putText(img=image_in, text=traffic_light_state, org=(center[0] + 50, center[1]),
        fontFace=cv2.FONT_HERSHEY_COMPLEX , fontScale=1, color=[0, 0, 0], lineType=cv2.LINE_AA, thickness=4)
cv2.putText(img=image_in, text=traffic_light_state, org=(center[0] + 50, center[1]),
        fontFace=cv2.FONT_HERSHEY_COMPLEX , fontScale=1, color=[255, 255, 255], lineType=cv2.LINE_AA, thickness=2)

根据我的经验,按照评论中的建议,扩张并不是最快的。如果在我经常编辑的大图像中使用 addWeighted 可能会很昂贵。在这两种情况下肯定有固定速度的技巧,但这种方法更容易。

size = cv2.getTextSize("Test", cv2.FONT_HERSHEY_COMPLEX, 2, 4)[0]
im = np.ones((size[1], size[0]), np.uint8)*127
cv2.putText(im, "Test", (0,size[1]), cv2.FONT_HERSHEY_COMPLEX, 2, (0,), 4)
cv2.putText(im, "Test", (0,size[1]), cv2.FONT_HERSHEY_COMPLEX, 2, (255,), 2)
cv2.imwrite("test.png", im)

产量 this image. (不完全确定截断,但在插入已制作的图像时通常不是问题。)

关于python - 如何使用 OpenCV2 在带有黑色边框的图像上显示白色文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516211/

相关文章:

python - 如何与 Kivy GUI 一起运行 Tornado 事件循环?

python - 遍历字典中的列表

python - 如何从 python 中的模糊图像中找到扭曲矩形的准确角位置?

winapi - Visual Studio 2010 Arduino串行通信

python - 在没有附加库的情况下,在 shell 或 Python 中使用 SFTP 递归获取文件列表

python - OSX 上的 tar : Unrecognized archive format error when trying to unpack flower_photos. tgz、TF 教程

java - 如何通过评估相等邻域像素的百分比来减少图像中的噪声 - Java OpenCV

c - 在 OpenCV 中获取窗口的大小

image - 在不使用 Hough 变换的情况下查找图像中的圆圈

python - 多对多字段 - 访问属性