随笔 - 304  文章 - 0  评论 - 35  阅读 - 18万

文本检测-1-MSER

MSER全称叫做最大稳定极值区域(MSER-Maximally Stable Extremal Regions),该算法是2002提出的,主要是基于分水岭的思想来做图像中斑点的检测。

# -*- encoding: utf-8 -*-
"""
@date: 2021/3/30 3:57 下午
@author: xuehuiping
"""
# https://my.oschina.net/u/876354/blog/3054322
# MSER
import cv2

# 读取图片
imagePath = '/Users/xuehuiping/git/fapiao_tax_code/demo_images/test2.png'
imgname = imagePath.split('/')[-1].split('.')[0]
imgname = 'result/' + imgname
print(imgname)
img = cv2.imread(imagePath)

# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()
orig = img.copy()

# 调用 MSER 算法
mser = cv2.MSER_create()
regions, _ = mser.detectRegions(gray)  # 获取文本区域
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]  # 绘制文本区域
cv2.polylines(img, hulls, 1, (0, 255, 0))
cv2.imwrite(imgname + '_mser.jpg', img)
print(len(hulls))

# 将不规则检测框处理成矩形框
temp = []
with open(imgname + '_vis.txt', 'w') as f:
    for c in hulls:
        x, y, w, h = cv2.boundingRect(c)
        line = '{} {} {} {}'.format(x, y, w, h)
        if line in temp:
            continue
        if w > 100 or h > 100:
            continue
        temp.append(line)
        f.write('{} {} {} {}\n'.format(x, y, x + w, y + h))  # 左上角、右下角
        cv2.rectangle(vis, (x, y), (x + w, y + h), (255, 255, 0), 1)
cv2.imwrite(imgname + '_vis.jpg', vis)

矩形效果


posted on   宋岳庭  阅读(542)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示