Python OpenCV cv2绘制带有文本的矩形

时间:2019-05-13 08:11:52

标签: python opencv

我使用

在图像上绘制一个矩形
cv2.rectangle(frame,(x,y),(x1,y1),(0,255,0),2)

我想绘制带有文本信息的矩形。我该怎么做?是否有任何可用的现成实现?还是应该匹配矩形的左上角坐标,并尝试显示与cv2 rect元素不同的cv2文本元素?

您能指导我执行任何代码实现/解决方法吗?

P.S:我不想使用object_detection。 TF提供的可视化工具。

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用cv2.putText在矩形顶部绘制文本信息。例如,您可以抓取轮廓坐标,绘制一个矩形,然后通过向上移动将其放在文本上方。

resourceMethodsWithoutModels()

您会得到类似的东西

enter image description here

答案 1 :(得分:0)

您可能需要使用将文本作为输入的函数,position_x,position_y ..来扩展代码,它将测量字母的大小并根据该大小动态设置矩形宽度。

您可以使用: cv2.getTextSize(文本,字体,font_scale,粗细)

获取要使用的像素数,然后使用它来定义矩形宽度。

答案 2 :(得分:0)

enter image description here

也许对你来说太晚了,但我们可以做这样的事情:

x1, y1 是左上角
x2, y2 为右下点

# For bounding box
img = cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)
 
# For the text background
# Finds space required by the text so that we can put a background with that amount of width.
(w, h), _ = cv2.getTextSize(
        label, cv2.FONT_HERSHEY_SIMPLEX, 0.6, 1)

# Prints the text.    
img = cv2.rectangle(img, (x1, y1 - 20), (x1 + w, y1), color, -1)
img = cv2.putText(img, label, (x1, y1 - 5),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.6, text_color, 1)

# For printing text
img = cv2.putText(img, 'test', (x1, y1),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255,255,255), 1)