opencv mser算法框出图片文字区域
2024-10-08 20:18:33
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()
最新文章
- ASP.NET MVC 5 -从控制器访问数据模型
- 可输出sql的PrepareStatement封装
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- Linux 压缩系列常用命令
- Struts2基本配置详解
- 用NAN简化Google V8 JS引擎的扩展
- java基础知识回顾之java Thread类学习(四)--java多线程安全问题(锁)
- 黄源河《左偏树的应用》——数字序列(Baltic 2004)
- gridview中判断隐藏还是现实
- red hat Linux 使用CentOS yum源更新
- Nginx集群之SSL证书的WebApi微服务
- 关于导入excel问题
- 软工+C(11): 从命令行开始逐步培养编程能力(Java)
- Composer 安装时要求输入授权用户名密码?
- 咖啡之约--体验 SourceAnywhere
- HDU - 4780费用流
- Yii2 数据库查询汇总
- 【待补充】[Spark Core] Spark 实现标签生成
- java 类中的细节
- 汇编,浮点运算符,fldpi,fmul等指令说明.
热门文章
- hdu3605 Escape 二分图多重匹配/最大流
- linux ssh的安装与配置以及实现密钥登录
- .NET本质论 用类型编程
- S老师 背包系统 装备系统 锻造系统 学习
- PowerDesigner学习 ---- 系列文章
- Linux下安装jdk&;Jmeter
- CSS如何实现”右部宽度固定,左部自适应“的布局
- webpack 中,loader、plugin 的区别
- 运用MQTT-JMeter插件测试MQTT服务器性能
- Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(4)