点击上方蓝字关注我们

微信公众号: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去除手机拍摄文本底色相关推荐

  1. 如何使用OpenCV+Python去除手机拍摄文本底色

    起因 最近经常被要求手机拍摄考试卷,但是拍摄完之后,跟实际的黑白考试卷有很大的色差,打印出来之后背景就变成了灰色,看着很不舒服.于是我想起了好久以前,我用过的一个软件叫全能扫描王,发现它里面是有去除这 ...

  2. python 去除 txt文本换行

    python 去除 txt文本换行 将需要去除换行的txt文本文档,命名为 text.txt 运行py文件后,会生成 "去除换行后的文本.txt" def qchh():f1 = ...

  3. android opencv 识别文字_基于SpringBoot的车牌识别系统(附项目地址)

    gitee开源地址 https://gitee.com/admin_yu/yx-image-recognition 介绍 spring boot + maven 实现的车牌识别及训练系统 基于java ...

  4. python opencv录制视频_如何使用OpenCV和Python录制视频?

    我已经看过OpenCV的Python example介绍了如何使用VideoCapture和VideoWriter来捕获和写出视频文件.但我一直在想:OpenCV Error: Assertion f ...

  5. python opencv 录制视频_如何使用OpenCV、Python和深度学习在图像和视频中实现面部识别?...

    Face ID 的兴起带动了一波面部识别技术热潮.本文将介绍如何使用 OpenCV.Python 和深度学习在图像和视频中实现面部识别,以基于深度识别的面部嵌入,实时执行且达到高准确度. 以下内容由 ...

  6. opencv测试代码_玩转OpenCv(二):安装vs2010和opencv3

    winows10环境 vs2010下载及安装 鉴于此类网上教程很多,不复述(懒?_?). opencv3下载及安装 第一步:去官网挑个版本3下载.注意下载的是win pack.以3.4.5为例.下载完 ...

  7. opencv 轮廓放大_【走进OpenCV】这样腐蚀下来让我膨胀!

    小白导读 学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了[走进OpenCV]系列,主要帮助小伙伴了解如何调用OpenCV库,涉及到的知识点会做简单讲解. 本文主 ...

  8. python识别手写文字_如何快速使用Python神经网络识别手写字符?(文末福利)

    原标题:如何快速使用Python神经网络识别手写字符?(文末福利) 点击标题下[异步社区]可快速关注 在本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法.如果只是想了解神 ...

  9. python docx 替换文字_在.docx文件-Python中查找和替换文本

    我一直在寻找一种方法来查找和替换docx文件中的文本,但运气不好.我试过docx模块,但没能成功.最后,我使用zipfile模块并替换docx存档中的document.xml文件,得出了下面描述的方法 ...

最新文章

  1. 业界丨2018年能干大事儿的5家人工智能初创公司
  2. php 单一职责,PHP之单例模式(职责模式)
  3. Description Resource Path Location Type Project configuration is not up-to-d
  4. JSP简单练习-EL获取表单数据
  5. XNA Billboard(公告板技术)
  6. Jenkins 设置镜像_docker+jenkins自动化部署
  7. Cloud for Customer UI toolbar里按钮的渲染逻辑
  8. vue-cli2定制ant-design-vue主题
  9. java表格模糊查询_使用java图形报表时,如何进行模糊查询
  10. 帮一个同学解决get请求的ajax上传数据,数据放在data里
  11. excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
  12. 仿城通网盘下载页面源码
  13. oracle-j2sdk1.8,cloudera-manager – 没有包oracle-j2sdk1.7可用?
  14. OJ每日一练——计算分数加减表达式的值
  15. 利用GitHub搭建个人网站
  16. Linux通过windows代理上网并安装软件
  17. Win10 如何在系统内用cmd命令查看系统详细信息
  18. VTK(The Visualization Toolkit)加载stl模型
  19. 为何演网络电影?吕良伟:帮青年导演圆电影梦
  20. 视频教程-系统集成项目管理工程师考试感性理性认识-软考

热门文章

  1. 关于SSM项目中配置文件的一些心得
  2. 我的“技术架构”之旅
  3. rails用generate为两个模型创建has_and_belongs_to_many中间表
  4. Codeforces Round #Pi (Div. 2) B. Berland National Library 模拟
  5. Flex 扩展combobox 实现复选功能
  6. 【论文写作】毕业论文写作的基本要求讲解
  7. python爬取歌词_利用Python网络爬虫抓取网易云音乐歌词
  8. linux tasklet 实例,Linux tasklet 分析笔记Chapter 2
  9. C++指针参数如何传递内存?
  10. 卷盘商标复卷检测系统