2024-10-03 13:26:12 发布
网友
我正在使用cv2.putText()在图像上绘制文本字符串。
当我写作时:
cv2.putText(img, "This is \n some text", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, 2)
在图像上绘制的文本是:
This is ? some text
我本来希望文本在新行中打印,因为\n是新行的转义字符,但它在图像上绘制?。
\n
?
为什么会这样?我做错什么了吗?
如果要将多行数据添加到视频帧中,则必须添加多行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调用,例如:
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)
如果要将多行数据添加到视频帧中,则必须添加多行putText(),即使上面的for循环答案只适用于图像,而不适用于通过代码创建视频的情况。
您可以使用python中的“exec”函数,该函数将字符串作为输入并将它们呈现到代码中。
因此,我建议创建一个小的python片段作为字符串,使用for循环追加所有行,并在需要的地方执行它,它还会在不同的地方显示。这个案子对我在视频中添加数据起了作用。
很遗憾,
putText
不能正确处理\n
符号。请参阅relevant rejected pull request。您需要自己拆分文本并进行几个putText
调用,例如:相关问题 更多 >
编程相关推荐