点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
导 读
本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤。
背景介绍
在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜。本文将使用OpenCV将倾斜的文档矫正水平并去除黑边。
实现步骤
本文只针对包含大部分文字的文档做倾斜矫正,思路来源是大部分文字倾斜后同一行的也在同一条直线,通过拟合直线计算文本倾斜角度,然后旋转来实现文本倾斜矫正。
【1】加载倾斜图像
【2】灰度转换+腐蚀+膨胀
【3】Canny边缘检测 + 霍夫线变换检测直线
【4】计算直线角度中值作为最终的旋转角度,旋转图像
注意不建议用最值或平均值,因为霍夫线变换有可能拟合到异常角度直线,最值或均值会导致最终角度偏大或偏小,使矫正结果偏差较大。
为什么使用均值?大家可以结合中值滤波的概念来理解。
举例来说:霍夫线变换找到了10条直线,角度分别为:0°,5°,25°,26°,26°,28°,28°,30°,100°,150°。如果去最大值angle=150°,最小值angle=0°,平均值angle=41.8°,中值angle=27°,明显中值结果更准确,更符合直线拟合角度的统计特性,因为拟合直线结果中大部分直线拟合是准确的,这部分角度会集中在一起。当然,使用直方图统计,计算出现频率最多的角度范围更准确,大家可以自行尝试。
【5】去除边角黑边(使用漫水填充或轮廓删选方式)
【6】换图片测试
Python-OpenCV实现源码:
链接:https://pan.baidu.com/s/1fja5mvGjuw3X4eMtjiSX0g
提取码:5lon
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~