• opencv mser算法框出图片文字区域


    MSER(Maximally Stable Extrernal Regions)是区域检测中影响最大的算法

    1. 原理

    MSER基于分水岭的概念:对图像进行二值化,二值化阈值取[0, 255],这样二值化图像就经历一个从全黑到全白的过程(就像水位不断上升的俯瞰图)。在这个过程中,有些连通区域面积随阈值上升的变化很小,这种区域就叫MSER。

    ,其中Qi表示第i个连通区域的面积,Δ表示微小的阈值变化(注水),当vi小于给定阈值时认为该区域为MSER。

    显然,这样检测得到的MSER内部灰度值是小于边界的,想象一副黑色背景白色区域的图片,显然这个区域是检测不到的。因此对原图进行一次MSER检测后需要将其反转,再做一次MSER检测,两次操作又称MSER+和MSER-

    2. 算法步骤

    从上节可以看到,MSER的基本思路很简单,但编码实现是很需要算法和编程技巧的

    以下算法步骤基于改进的分水岭算法:注水的地方固定,只有当该处的沟壑水漫出来后才能注入到另一个沟壑

    此外,为方便编程,面积变化的计算方式也从双边改为单边检测,即

     

    import sys
    sys.path.append('/usr/local/lib/python2.7/dist-packages/')
    
    from PIL import Image
    import numpy as np
    import cv2
    import matplotlib.pyplot as plt
    
    img = cv2.imread('img/origin2/31.jpg')
    mser = cv2.MSER_create(_min_area=300)
    
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    regions, boxes = mser.detectRegions(gray)
    
    for box in boxes:
        x, y, w, h = box
        cv2.rectangle(img, (x,y),(x+w, y+h), (255, 0, 0), 2)
    
    plt.imshow(img,'brg')
    plt.show()
  • 相关阅读:
    log输出到日志和控制台
    CRM--搜索功能
    CRM--对数据进行排序
    CRM-注意的小事情
    CRM--modelform之instance
    CRM--保留原搜索条件
    crm系统
    Django多个app情况下静态文件的配置
    测试
    题库
  • 原文地址:https://www.cnblogs.com/jkmiao/p/6797252.html
Copyright © 2020-2023  润新知