如何向检测到的 OCR 边界框添加填充?
How to add padding to detected OCR bounding boxes?
我正在关注: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):
如何向边界框添加填充?
您必须进入函数,找到提取框的行。每个框将用 2 个坐标(左上角和右下角)或一个坐标和偏移量(左上角点以及框的高度和宽度)表示。在这两种情况下,您都必须从边界框的左上角减去一些像素,并在右下角 coordinate/height 和宽度上添加一些像素。
例如,假设格式为 2 个坐标,您得到 ((456, 234), (789, 453))
。然后当你做数学运算时(从左上角减去并添加到右下角),你会得到类似 ((470, 250), (800, 470))
我希望这已经足够清楚了。
我很久以前就遇到过这个问题。简单地给 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)
我正在关注: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):
如何向边界框添加填充?
您必须进入函数,找到提取框的行。每个框将用 2 个坐标(左上角和右下角)或一个坐标和偏移量(左上角点以及框的高度和宽度)表示。在这两种情况下,您都必须从边界框的左上角减去一些像素,并在右下角 coordinate/height 和宽度上添加一些像素。
例如,假设格式为 2 个坐标,您得到 ((456, 234), (789, 453))
。然后当你做数学运算时(从左上角减去并添加到右下角),你会得到类似 ((470, 250), (800, 470))
我希望这已经足够清楚了。
我很久以前就遇到过这个问题。简单地给 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)