You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenCV合并邻近边界框:中世纪手稿单词分割问题

解决中世纪手稿单词分割中OpenCV边界框不连续的问题

嘿,针对你处理中世纪手稿时遇到的边界框不连续问题,我整理了几个实用的优化思路,都是处理这类特殊文本时常用的技巧:

一、先从图像预处理入手,增强文本连贯性

中世纪手稿往往存在笔画断裂、墨水晕染或者光照不均的问题,先把图像“修复”好,后续检测会顺畅很多:

  • 闭运算填补小缝隙:用形态学闭运算连接断开的笔画,选一个适配手稿字符粗细的矩形核就行:
    import numpy as np
    import cv2
    
    # 假设已经读入灰度图gray_img
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 5))  # 核大小可根据字符粗细调整
    processed_img = cv2.morphologyEx(gray_img, cv2.MORPH_CLOSE, kernel)
    
  • 自适应阈值替代全局阈值:手稿页面光照通常不均匀,自适应阈值能根据局部区域调整,减少文本断裂:
    adaptive_thresh = cv2.adaptiveThreshold(gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    

二、调整轮廓检测的参数,过滤无效区域

有时候不连续的框是因为检测到了太多小噪声或者内部轮廓,调整参数能过滤掉这些干扰:

  • 只检测外层轮廓+过滤小面积区域:用RETR_EXTERNAL只抓最外层轮廓,再把面积太小的噪声筛掉:
    contours, _ = cv2.findContours(processed_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # 过滤面积小于50的轮廓(阈值根据你的手稿字符大小调整)
    valid_contours = [cnt for cnt in contours if cv2.contourArea(cnt) > 50]
    

三、后处理合并相邻的边界框

如果预处理后还是有零散的框,那就手动把同一单词的框合并起来:

  • 先把所有框按x坐标排序(从左到右),然后检查相邻框是否在同一行且间距过小,符合条件就合并:
    # 假设bboxes是你检测到的所有边界框,格式为(x, y, w, h)
    bboxes.sort(key=lambda x: x[0])
    merged_bboxes = []
    current_box = bboxes[0]
    
    for box in bboxes[1:]:
        curr_x, curr_y, curr_w, curr_h = current_box
        box_x, box_y, box_w, box_h = box
        # 判断是否在同一行且间距小于字符宽度的1.5倍
        if abs(curr_y - box_y) < curr_h * 0.5 and (box_x - (curr_x + curr_w)) < curr_w * 1.5:
            # 合并成一个大框
            new_x = min(curr_x, box_x)
            new_y = min(curr_y, box_y)
            new_w = max(curr_x + curr_w, box_x + box_w) - new_x
            new_h = max(curr_y + curr_h, box_y + box_h) - new_y
            current_box = (new_x, new_y, new_w, new_h)
        else:
            merged_bboxes.append(current_box)
            current_box = box
    merged_bboxes.append(current_box)
    

四、针对中世纪手稿的特殊技巧

这类手稿字体不规则、行间距变化大,可以先检测文本行,再在每行内分割单词:用垂直投影法找到每行的区域,对每行单独做轮廓检测,能有效减少跨行的干扰。

小提示:调整参数时记得逐步测试,比如先调核大小,再调面积阈值,完全根据你的手稿风格来灵活调整数值哦!

内容的提问来源于stack exchange,提问作者Xavier-Laurent SALVADOR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:01:59