繁体   English   中英

Python OpenCV cv2 用文本绘制矩形

[英]Python OpenCV cv2 drawing rectangle with text

我使用

cv2.rectangle(frame,(x,y),(x1,y1),(0,255,0),2)

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

你能指导我使用任何代码实现/解决方法吗?

PS:我不想使用object_detection。 可视化工具可用于 tf.

在此处输入图片说明

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

x,y,w,h = cv2.boundingRect(contour)
image = cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 1)
cv2.putText(image, 'Fedex', (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36,255,12), 2)

你会得到这样的东西

在此处输入图片说明

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

您可以使用: cv2.getTextSize(text, font, font_scale, depth)

获取它将使用多少像素,然后使用它来定义矩形宽度。

在此处输入图片说明

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

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)

嗨,是否可以使用对象检测程序来扩展这些功能? 我知道你已经把它贴在这里了,但我想知道如何将它与对象检测程序集成,因为字体大小对我来说太小了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM