OpenCV putText()新行ch

2024-10-03 13:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用cv2.putText()在图像上绘制文本字符串。

当我写作时:

cv2.putText(img, "This is \n some text", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, 2)

在图像上绘制的文本是:

This is ? some text

我本来希望文本在新行中打印,因为\n是新行的转义字符,但它在图像上绘制?

为什么会这样?我做错什么了吗?


Tags: 字符串text图像文本imgis绘制some
2条回答

如果要将多行数据添加到视频帧中,则必须添加多行putText(),即使上面的for循环答案只适用于图像,而不适用于通过代码创建视频的情况。

您可以使用python中的“exec”函数,该函数将字符串作为输入并将它们呈现到代码中。

因此,我建议创建一个小的python片段作为字符串,使用for循环追加所有行,并在需要的地方执行它,它还会在不同的地方显示。这个案子对我在视频中添加数据起了作用。

stringexec = ""
m=0
for i in TextList:
    stringexec = steval+"cv2.putText(frame, TextList[" + str(TextList.index(i))+"], (100, 100+"+str(m)+"), cv2.FONT_HERSHEY_COMPLEX, 0.5, (200, 100, 100), 1, cv2.LINE_AA)\n"
    m += 100
exec(stringexec)

很遗憾,putText不能正确处理\n符号。请参阅relevant rejected pull request。您需要自己拆分文本并进行几个putText调用,例如:

text = "This is \n some text"
y0, dy = 50, 4
for i, line in enumerate(text.split('\n')):
    y = y0 + i*dy
    cv2.putText(img, line, (50, y ), cv2.FONT_HERSHEY_SIMPLEX, 1, 2)

相关问题 更多 >