作品简介

该程序是一款用于扫描图像的小工具
扫描是一种图像处理技术,生活中时常会用到扫描的技术,比如你获奖了,奖状到达学校第一时间是拿到学校扫描备案才会发给你,公司,印务店等也都会经常用到扫描工具,还有你扫二维码时都会使用到扫描技术

我们的最终目标就是将一个图片中我们需要的那部分独立扫描出来,就是扣图!!!

要扫描图像我们肯定是想获取对我们有用的信息内容,然而图像中难免存在许许多多无关信息,甚至可能影响我们处理图片,接下来我会一步一步根据我们需求(提取图片中的黑桃A)将程序一步步剖解开分析,首先放原图


原图

1.
图像中包含的信息量非常非常庞大,但对我们有用的其实并不多,怎样才能抛开对我们没用的信息呢?灰度图是图像处理技术中非常常见的一种技术,我们可以形象的将彩图理解为一个3*二维的矩阵形式,分别是R(红)G(绿)B(蓝),而灰度图把白色(255,255,255)与黑色(0,0,0)之间按对数关系分为若干等级,称为灰度,在灰度图中,我们便不再关心RGB,而只需要关注灰度,此时信息量就减少了很多了

灰度图

2.
噪声对人的影响噪声可以理解为“ 妨碍人们感觉器官对所接收的信源信息理解的因素”。而图像中也存在各种妨碍人们对其信息接受的因素,于是便引入了一个叫“图像噪声”的概念,消除噪声的方式便是使用滤波器,这里我使用的是一种称为“高斯滤波器”的技术,高斯滤波器技术的核心是对整幅图像进行加权平均,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。接下来本来应该到了轮廓提取环节的,但经过我的实践我发现有时候提取出来的图片会因为亮度原因导致有些地方的灰度区分不明显,而提取轮廓的核心就是边缘检测,图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。此时就需要一种形态学操作:膨胀。膨胀是对白色部分(高亮部分)而言的,它使图像中的高亮部分进行膨胀,形象的理解为“领域扩张”,效果图拥有比原图更大的高亮区域。(同时膨胀也有一定的去噪效果)

去噪膨胀后的图

3.
接下来就是上面所说的轮廓提取了,提取出来的轮廓就是图像中的各种信息的“领域”

轮廓提取图

4.
通常情况来说我们要提取的信息同时也是整个图像中“领域”最大的那部分信息,于是我根据轮廓图选择面积最大的那块,也就得到了我们需要的黑桃A的“领域”

黑桃A轮廓

5.
刚刚做的每一步都筛掉了对我们没用的信息,就剩了我们要的那部分的一个轮廓了,现在来想想,我们要把这部分内容扣出来,扣出来是什么样子呢?就是将这部分变成一个独立的图片!图片都是方形的对吧,所以我们需要确定扣出来的图片的长和宽,长和宽需要怎么获取呢?当然我们需要定位它的4个顶点,顶点怎么获取呢?很不幸,要在一个点集中直接确定它的四个顶点很不容易,但是,上帝为你关上了一扇门就会为你开一扇窗,opencv视觉库中提供了一个提取线段的函数,它的核心是霍夫曼变换。提取出了4条线段后我门就可以根据两两间的交点确定4个顶点的位置了,当然确定4个点后,四个点连成的图像并非是标准的矩形,并且我们并不知道取出的4个点顺序是怎样的,4个点的顺序就决定了我们透视变换后的图像的方向,由4个点坐标我们可以确定4个点围成的矩形的中点,然后就可以根据中点确定4个点的顺序(这里我们按左上,右上,右下,左下),,4个点的顺序有了,就可以确定两组对边,于是我们根据两组相对的边,取每组相对长的那条为标准就确定了长和宽

5点图

6.
上面的准备工作都做好了以后我们就可以开始将图片独立出来了,这里便需要用到图形学中非常重要的一个概念了,透视变换!!有了4个顶点和长宽,我们就可以确定我们要独立出来的图像的顶点的位置,然后又知道原来4个点在原图中的位置,于是就可以算出变换矩阵,然后再根据这个变换矩阵进行透视,我们就大功告成了

扫描出来的图像

7.
如果我们想做成黑白复印的效果怎么做呢?很简单,我们可以根据灰度图的灰度,然后确定一个阙值,然后用这个阙值,与每个像素点相比较,高于阙值的就变换成白色,低于的就变成黑色,于是就有了下图的效果

黑白图

opencv制作扫描软件相关推荐

  1. 使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层

    使用Python,OpenCV制作图像Mask--截取ROIs及构建透明的叠加层 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用OpenCV制作Mask图像掩码.使用位运算和图像掩码允许我们只 ...

  2. OpenCV制作自己的线性滤波器

    OpenCV制作自己的线性滤波器 制作自己的线性滤波器 目标 理论 相关性 什么是内核? 与内核的关联如何工作? 这个程序做什么? 代码 解释 载入图片 初始化参数 环形loop 结果 制作自己的线性 ...

  3. 使用Python,OpenCV制作不同风格的素描图(正常,漫画,写实风格)

    使用Python,OpenCV制作不同风格的素描图(正常,漫画,写实风格) 这篇博客将介绍如何使用Python,OpenCV制作不同风格的素描图(正常风格,漫画风格,写实风格). 1. 效果图 原始图 ...

  4. 基于OpenCV制作道路车辆计数应用程序

    基于OpenCV制作道路车辆计数应用程序 发展前景 随着科学技术的进步和工业的发展,城市中交通量激增,原始的交通方式已不能满足要求:同时,由于工业发展为城市交通提供的各种交通工具越来越多,从而加速了城 ...

  5. 使用Python,OpenCV制作全透明的logo水印,对图像添加水印

    使用Python,OpenCV制作全透明的logo水印,对图像添加水印 1. 效果图 2. OpenCV自己制作一个logo(完全不透明的) 3. 制作水印图源码 4. 添加水印源码 5. 思考: 参 ...

  6. OpenCV制作一个类“全能扫描王”的简易扫描软件

    转自:https://www.cnblogs.com/skyfsm/p/7324346.html 相信很多人手机里都装了个"扫描全能王"APP,平时可以用它来可以扫描一些证件.文本 ...

  7. 如何用OpenCV制作一个低成本的立体相机

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:3D视觉工坊 AR/VR的兴起,让我们喜欢上了3D电影 ...

  8. 独家|OpenCV1.11 使用OpenCV制作一个低成本立体摄像机

    作者:Kaustubh Sadekar 翻译:顾伟嵩 校对:张玲本文约3000字,建议阅读6分钟 本文我们将学习如何创建一个定制的低成本立体摄像机. 标签:3D计算机视觉,摄像机标定,经典计算机视觉, ...

  9. 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集

    立即学习:https://edu.csdn.net/course/play/24719/279505?utm_source=blogtoedu 目录 一.制作数据集代码 二.思路总结 1.数据集目录的 ...

最新文章

  1. 大三后端暑期实习面经总结——SSM微服务框架篇
  2. CG游戏道具全流程制作视频教程 Artstation – Stylized Game Asset
  3. ASP组件AspJpeg(加水印)
  4. Python调用MongoDB使用心得
  5. html如何控制弹窗位置,控制弹窗展示顺序
  6. QUIC协议的演进之路
  7. ElasticSearch之动态映射和模板
  8. ocp 042 第六章:管理用户安全性
  9. Python2.x还是3.x?
  10. AD15复制相同模块布局
  11. ESP32-C2 Homekit烧录示例
  12. 数据有效性做下拉菜单
  13. 宝贝流量高转化率低怎么办,如何提高宝贝转化率
  14. excel白屏未响应_「excel打开空白」Excel 2016 打开后空白的解决方法 - seo实验室
  15. 阿里云服务器搭建和宝塔面板连接
  16. Locale 和 LanguageTag
  17. 神经网络有哪些基本功能,常见的神经网络有哪些
  18. java实现极简单的 TXT小说阅读器(第三版)
  19. ubuntu20.04 双显卡安装
  20. 行人重识别简介(Person ReID)

热门文章

  1. 如何使用Python识别图片中的二维码
  2. web-upload文件解析
  3. 宣传部第三次培训总结
  4. R语言处理单细胞表达矩阵合并拟细胞(pseudocell)对表达矩阵进行压缩
  5. “私域流量”的金矿,正在被快手撬动
  6. windows7开机后,罗技k380无法自动连接解决办法
  7. 计算机网络子网划分工具,子网计算工具(子网划分工具)
  8. Reflect基本使用和了解
  9. Zuul网关简介以及使用
  10. Python类继承之虚函数