我使用
在图像上绘制一个矩形cv2.rectangle(frame,(x,y),(x1,y1),(0,255,0),2)
我想绘制带有文本信息的矩形。我该怎么做?是否有任何可用的现成实现?还是应该匹配矩形的左上角坐标,并尝试显示与cv2 rect元素不同的cv2文本元素?
您能指导我执行任何代码实现/解决方法吗?
P.S:我不想使用object_detection。 TF提供的可视化工具。
答案 0 :(得分:1)
您可以使用cv2.putText
在矩形顶部绘制文本信息。例如,您可以抓取轮廓坐标,绘制一个矩形,然后通过向上移动将其放在文本上方。
resourceMethodsWithoutModels()
您会得到类似的东西
答案 1 :(得分:0)
您可能需要使用将文本作为输入的函数,position_x,position_y ..来扩展代码,它将测量字母的大小并根据该大小动态设置矩形宽度。
您可以使用: cv2.getTextSize(文本,字体,font_scale,粗细)
获取要使用的像素数,然后使用它来定义矩形宽度。
答案 2 :(得分:0)
也许对你来说太晚了,但我们可以做这样的事情:
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)