opencv 打印文字_如何使用OpenCV+Python去除手机拍摄文本底色
点击上方蓝字关注我们
微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
起因
最近经常被要求手机拍摄考试卷,但是拍摄完之后,跟实际的黑白考试卷有很大的色差,打印出来之后背景就变成了灰色,看着很不舒服。于是我想起了好久以前,我用过的一个软件叫全能扫描王,发现它里面是有去除这种文本底色的功能的,但是有时候也很坑!我就想手动写一个简单python程序来实现。最终我写出的程序测试效果如下:
左侧是用手机拍摄的图像,右侧是用opencv-python处理之后的结果。
思路分析
首先看一下输入的原图,(小学生作业找不到了,让我给他打印是起因,他要手写,我说我来处理一下打印出来),别人拍的原图:
我发现这些图像基本上都是黑白纸张或者有些有虚线的纸张,我首先想到把文字部分从输入图像中都抠出来来,不需要太精准,大致就可以了,所以要获取图像中文字的mask,我就想到了用二值化的方法,我首先尝试了全局二值化OTSU与三角法来获取mask,发现效果都有点坑爹!图示如下:
最终效果是这样,而当光线稍微有点不均匀的时候,这个就直接在二值话时候翻车了!会丢失信息,所以我想到了用自适应的二值化方法,最终选择:
binary = cv.adaptiveThreshold(image, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, 25, 15)
该函数来完成二值化,实现mask提取提取完成之后,通过了一个形态学操作来实现简单的膨胀操作,这样确保每个字像素范围足够大,不会丢失。最终自适应的mask:
然后与原图实现与操作,得到真实文字区域,使用mask区域取反得到mask1,然后对mask与输入的灰度图像完成bitwise_and操作,得到的结果与mask1相加即可得到最终的效果,图示如下:
不会像二值话之后的那样让人眼睛看到不舒服的黑色,想要获取该例子完整源代码,请关注 OpenCV学堂,然后回复 “ 文本去背景 ”
君子藏器于身,待时而动
推荐阅读
OpenCV4系统化学习路线图-视频版本!
Tensorflow + OpenCV4 安全帽检测模型训练与推理
汇总 | OpenCV DNN模块中支持的分类网络
OpenCV中支持的人脸检测方法整理与汇总
从3D人脸到自动驾驶,CVPR2020十个顶级开源数据集
轻松学Pytorch – 构建UNet实现道路裂纹检测
详解ENet | CPU可以实时的道路分割网络
从Pytorch 的ONNX到OpenVINO中IR中间层
OpenVINO中的FCOS人脸检测模型代码演示
详解OpenVINO 模型库中的人脸检测模型
效果特好 | OpenVINO手写数字识别
OpenVINO+OpenCV 文本检测与识别
OpenVINO + OpenCV实现点头与摇头识别验证
OpenVINO + OpenCV实现车辆检测与道路分割
OpenCV二值图像分析之寻找缺失与靶心
OpenCV 基于Inception模型图像分类
OpenCV4.4 + YOLOv4 真的可以运行了…..
opencv 打印文字_如何使用OpenCV+Python去除手机拍摄文本底色相关推荐
- 如何使用OpenCV+Python去除手机拍摄文本底色
起因 最近经常被要求手机拍摄考试卷,但是拍摄完之后,跟实际的黑白考试卷有很大的色差,打印出来之后背景就变成了灰色,看着很不舒服.于是我想起了好久以前,我用过的一个软件叫全能扫描王,发现它里面是有去除这 ...
- python 去除 txt文本换行
python 去除 txt文本换行 将需要去除换行的txt文本文档,命名为 text.txt 运行py文件后,会生成 "去除换行后的文本.txt" def qchh():f1 = ...
- android opencv 识别文字_基于SpringBoot的车牌识别系统(附项目地址)
gitee开源地址 https://gitee.com/admin_yu/yx-image-recognition 介绍 spring boot + maven 实现的车牌识别及训练系统 基于java ...
- python opencv录制视频_如何使用OpenCV和Python录制视频?
我已经看过OpenCV的Python example介绍了如何使用VideoCapture和VideoWriter来捕获和写出视频文件.但我一直在想:OpenCV Error: Assertion f ...
- python opencv 录制视频_如何使用OpenCV、Python和深度学习在图像和视频中实现面部识别?...
Face ID 的兴起带动了一波面部识别技术热潮.本文将介绍如何使用 OpenCV.Python 和深度学习在图像和视频中实现面部识别,以基于深度识别的面部嵌入,实时执行且达到高准确度. 以下内容由 ...
- opencv测试代码_玩转OpenCv(二):安装vs2010和opencv3
winows10环境 vs2010下载及安装 鉴于此类网上教程很多,不复述(懒?_?). opencv3下载及安装 第一步:去官网挑个版本3下载.注意下载的是win pack.以3.4.5为例.下载完 ...
- opencv 轮廓放大_【走进OpenCV】这样腐蚀下来让我膨胀!
小白导读 学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了[走进OpenCV]系列,主要帮助小伙伴了解如何调用OpenCV库,涉及到的知识点会做简单讲解. 本文主 ...
- python识别手写文字_如何快速使用Python神经网络识别手写字符?(文末福利)
原标题:如何快速使用Python神经网络识别手写字符?(文末福利) 点击标题下[异步社区]可快速关注 在本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法.如果只是想了解神 ...
- python docx 替换文字_在.docx文件-Python中查找和替换文本
我一直在寻找一种方法来查找和替换docx文件中的文本,但运气不好.我试过docx模块,但没能成功.最后,我使用zipfile模块并替换docx存档中的document.xml文件,得出了下面描述的方法 ...
最新文章
- 业界丨2018年能干大事儿的5家人工智能初创公司
- php 单一职责,PHP之单例模式(职责模式)
- Description Resource Path Location Type Project configuration is not up-to-d
- JSP简单练习-EL获取表单数据
- XNA Billboard(公告板技术)
- Jenkins 设置镜像_docker+jenkins自动化部署
- Cloud for Customer UI toolbar里按钮的渲染逻辑
- vue-cli2定制ant-design-vue主题
- java表格模糊查询_使用java图形报表时,如何进行模糊查询
- 帮一个同学解决get请求的ajax上传数据,数据放在data里
- excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
- 仿城通网盘下载页面源码
- oracle-j2sdk1.8,cloudera-manager – 没有包oracle-j2sdk1.7可用?
- OJ每日一练——计算分数加减表达式的值
- 利用GitHub搭建个人网站
- Linux通过windows代理上网并安装软件
- Win10 如何在系统内用cmd命令查看系统详细信息
- VTK(The Visualization Toolkit)加载stl模型
- 为何演网络电影?吕良伟:帮青年导演圆电影梦
- 视频教程-系统集成项目管理工程师考试感性理性认识-软考
热门文章
- 关于SSM项目中配置文件的一些心得
- 我的“技术架构”之旅
- rails用generate为两个模型创建has_and_belongs_to_many中间表
- Codeforces Round #Pi (Div. 2) B. Berland National Library 模拟
- Flex 扩展combobox 实现复选功能
- 【论文写作】毕业论文写作的基本要求讲解
- python爬取歌词_利用Python网络爬虫抓取网易云音乐歌词
- linux tasklet 实例,Linux tasklet 分析笔记Chapter 2
- C++指针参数如何传递内存?
- 卷盘商标复卷检测系统