如何在框架/图像中插入多行文本

How to insert multiple lines of text into frame/image

本文关键字:插入 文本 图像 框架      更新时间:2023-10-16

我使用C++和OpenCV创建了一个框架,并希望在其中插入几行文本。

使用以下代码:

putText(frame, "My text here", cvPoint(30,30), 
    FONT_HERSHEY_COMPLEX_SMALL, 0.8, cvScalar(200,200,250), 1, CV_AA); 

但在这里,我想写,假设两行分开,"你好"answers"欢迎"。这里的问题是\n和endl不起作用。如果可能的话,也可以将文本对齐到框架的中间。

非常感谢。

您需要分别为每一行调用putText()。为了计算每一新行的位置,可以使用getTextSize()返回文本的宽度和高度以及基线。在Python中,你可以做这样的事情:

    position = (30, 30)
    text = "Some text including newline n characters."
    font_scale = 0.75
    color = (255, 0, 0)
    thickness = 3
    font = cv2.FONT_HERSHEY_SIMPLEX
    line_type = cv2.LINE_AA
    text_size, _ = cv2.getTextSize(text, font, font_scale, thickness)
    line_height = text_size[1] + 5
    x, y0 = position
    for i, line in enumerate(text.split("n")):
        y = y0 + i * line_height
        cv2.putText(frame,
                    line,
                    (x, y),
                    font,
                    font_scale,
                    color,
                    thickness,
                    line_type)