我正在关注:EAST文本检测器(https://github.com/argman/EAST#installation)教程的tensorflow实现。
当我执行上面链接的GitHub代码时,在图像上我得到以下输出:
检测代码为eval.py
在输出中,我想向生成的边界框添加填充,以便可以正确捕获第一个“ K”和最后一个“ 0”。
我在代码的第69行更改了框阈值。我尝试了0.1、0.05等不同的值,但框的大小没有变化。
def detect(score_map, geo_map, timer, score_map_thresh=0.8, box_thresh=0.1, nms_thres=0.2):
如何向边框添加填充?
答案 0 :(得分:1)
您必须进入函数,找到提取框的行。每个框将用2个坐标(左上和右下)或一个坐标和偏移量(框的左上角以及高度和宽度)表示。在这两种情况下,您都必须从边界框的左上角减去一些像素,并在右下角的坐标/高度和宽度上添加一些像素。
例如,假设格式为2坐标,则得到((456, 234), (789, 453))
。然后,当您进行数学运算(从左上角减去并在右下角添加)时,您会得到类似((470, 250), (800, 470))
的信息,我希望这已经足够清楚了。
答案 1 :(得分:1)
我很久以前就有这个问题。只需向bbox添加一个边距,然后确认它没有离开图像。 如果您有边界框:
def expand(bbox, margin=5):
# supose bbox is x1, y1, x2, y2
return [
bbox[0, 0] - margin,
bbox[1] - margin,
bbox[2] + margin,
bbox[2] + margin]
bbox_expanded = expand(bbox)
img_crop = img[max(0, bbox[1]):min(img.shape[0], bbox[3]), max(bbox[0], 0):min(img.shape[1], bbox[2]), :]
如果您有4分:
def expand(points, margin):
# supose points is 1, p2, p3, p4
return [
[points[0, 0] - margin, points[0, 1] - margin],
[points[1, 0] + margin, points[1, 1] - margin],
[points[2, 0] + margin, points[2, 1] + margin],
[points[3, 0] - margin, points[3, 1] + margin]]
points_expanded = expand(points)