1.介绍Introduction
站在用户的角度思考问题,与客户深入沟通,找到东方网站设计与东方网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖东方地区。
从OpenCV2.4开始,加入了新的类FaceRecognizer,我们可以使用它便捷地进行人脸识别实验。本文既介绍代码使用,又介绍算法原理。(他写的源代码,我们可以在OpenCV的opencv\modules\contrib\doc\facerec\src下找到,当然也可以在他的github中找到,如果你想研究源码,自然可以去看看,不复杂)
目前支持的算法有
Eigenfaces特征脸createEigenFaceRecognizer()
Fisherfaces createFisherFaceRecognizer()
LocalBinary Patterns Histograms局部二值直方图 createLBPHFaceRecognizer()
下面所有的例子中的代码在OpenCV安装目录下的samples/cpp下面都能找到,所有的代码商用或者学习都是免费的。
1.2.人脸识别Face
Recognition
对人类来说,人脸识别很容易。文献[Tu06]告诉我们,仅仅是才三天的婴儿已经可以区分周围熟悉的人脸了。那么对于计算机来说,到底有多难?其实,迄今为止,我们对于人类自己为何可以区分不同的人所知甚少。是人脸内部特征(眼睛、鼻子、嘴巴)还是外部特征(头型、发际线)对于人类识别更有效?我们怎么分析一张图像,大脑是如何对它编码的?David Hubel和TorstenWiesel向我们展示,我们的大脑针对不同的场景,如线、边、角或者运动这些局部特征有专门的神经细胞作出反应。显然我们没有把世界看成零散的块块,我们的视觉皮层必须以某种方式把不同的信息来源转化成有用的模式。自动人脸识别就是如何从一幅图像中提取有意义的特征,把它们放入一种有用的表示方式,然后对他们进行一些分类。基于几何特征的人脸的人脸识别可能是最直观的方法来识别人脸。第一个自动人脸识别系统在[Kanade73]中又描述:标记点(眼睛、耳朵、鼻子等的位置)用来构造一个特征向量(点与点之间的距离、角度等)。通过计算测试和训练图像的特征向量的欧氏距离来进行识别。这样的方法对于光照变化很稳健,但也有巨大的缺点:标记点的确定是很复杂的,即使是使用最先进的算法。一些几何特征人脸识别近期工作在文献[Bru92]中有描述。一个22维的特征向量被用在一个大数据库上,单靠几何特征不能提供足够的信息用于人脸识别。
华为识别图片中的文字的方法如下:
工具/原料:华为V30 PRO、Android 4.0.0.180、本地设置1.0。
1、首先打开手机,选择图库应用。
2、然后打开需要识别文字的图片,如下图所示。
3、用两个手指按住图片不放。下方提取文字框中,就会出现识别的文字。
4、选择提取文字框下方的全选按钮,选中识别的文字。
5、点击复制文字选项,复制选中的文字。
6、任意打开一个文字编辑工具,只需能输入文字即可。
7、文本编辑区,按下手指,出现粘贴选项后点击。
8、可以看到,文字已成功识别。
在手机的设置界面,有一个叫辅助功能的设置,点击进去可以看到已安装的辅助服务,点击具体的服务进去可以看到该服务的一些描述,可以在此开启该服务,这也是唯一一个能开启服务的地方。
开启辅助功能相当于开启了一个服务,在手机界面改变的时候,就能监听到该页面的一些信息并且能拿到界面的一些控件,然后可以对控件进行模拟点击,从而实现我们想要的功能。
除此以外,不仅能够对获取到的控件进行模拟点击,在Android7.0及以上的版本,我们可以模拟任意位置的点击包括触摸、滑动等等,就是说我们可以实现任何 人能够进行的操作 ,这个是很有用的,可以做出很多有意思的东西,如果再配上截图、录屏和图像识别,就更有意思了。
模拟点击,就是说我们的手机界面自己动,整个流程像是一只手在帮你操作一样的;
新建一个 Service 继承 AccessibilityService
然后去 AndroidManifest 文件里面去注册一下这个Service
在 meta-data 节点下有个 resource 值,这是个xml文件,里面配置了该辅助的一些信息,在res目录下新建一个文件夹,名字叫xml,然后新建一个xml文件,名字和 resource 配置的一样就行了
里面配置了一些参数,比如 notificationTimeout 是指定多少毫秒监听一次界面变化的, packageNames 是指定监听哪个应用的,删掉这个配置就是监听全局, description 是对于该辅助的描述,其他配置不管也罢。
然后在LuckMoneyService里面重写一下onAccessibilityEvent方法
每当界面改变的时候就会回调这个方法,通过 event 我们就可以获取到界面的信息包括界面上的控件
上面的操作都比较基础,根据控件显示的文字查找控件,找出来的肯定是TextView和Button了,根据ID查找控件,ID就是指的写布局文件的时候设置的控件的ID
模拟触摸就是可以模拟人的触摸动作,也比较简单
可以看到需要传入 path 就是一个路径嘛,模拟滑动的路径,用canvas画过画的都知道这东西还是比较简单的, startTime 就是多久后开始模拟事件, duration 就是该滑动的时间,其他回调什么的为空就可以了;
如何获取控件的ID呢,而我又是如何知道界面上有哪些控件呢,可以通过一个工具来实现,就是在sdk工具下面的一个叫 monitor 的工具,其实之前的AndroidStudio是带这个工具的,但是后来界面上是没有了,但是其实还在的
连上手机,打开这个工具,手机上打开你要查看的界面,点击工具手机的小手机的图标,就会截屏,显示出这个界面的信息
辅助功能能做的东西大概就上面这些了,能做出什么功能就靠自己的想象了
推荐阅读: Android微信抢红包辅助
工具/原料
安卓手机
人脸识别解锁
方法/步骤
1
进入手机设置,方式有点击手机功能键,也可以在手机找到一个如图的设置图标。点击进入手机设置。
在设置里有很多选项, 可能新手会看晕,你只需要查找到与安全字眼有关的,点击进入看看,若不是再返回再找找。
进入手机安全选项设置,选择屏幕安全保护或有一些手机叫“锁定屏幕”。
选择屏幕保护的密码类型,可以是图案九宫格,也可以是数字、人脸组合。
点击人脸解锁进入人脸识别解锁屏幕功能设置界面。进入这个界面下面的操作所有的手机基本都一样了。
在上一步中了解一下人脸识别解锁屏幕功能需要注意的地方。光线,平视。
当围绕脸部一圈的小圆点都点亮了,就捕获面部图像成功。
为了人脸解锁失败进不了手机,还可以选择备份解锁。可骒图案九宫格,可以数字密码。
输入数字密码。点击下一步。
再次输入,点击继续。
大功造成了。现在可以将你的手机关屏,然后再开屏,则会激活你的前置摄像头,对正你的头可以进行人脸识别解锁屏幕了。
用AndroidSDK中的Face Detector实现人脸识别
流程是这样的:
1. 读取一张图片至Bitmap (从Resource中,或是从手机相册中选取)
2. 使用FaceDetector API分析Bitmap,将探测到的人脸数据以FaceDetector.Face存储在一个Face list中;
3.将人脸框显示在图片上。
假设已经把验证码图片保存到本地了
我说一下验证码识别的大致步骤吧
1,读取图片到bitmap
2,进行灰度操作
3,进行才二值操作
4,如果有干扰点 一般用滤波器或八邻域去干扰点
5,如果有干扰线 如果是简单的直线可以用扫描法,八后法等,复杂的应该根据特点调整算法
6,如果有干扰色块 也应该想法去除
7,如果有较大的倾斜 需要进行适当校正
8,此时得到的应该是比较干净的字符了,如果是非粘连的可以直接用投影法分割成单个字符
如果有粘连,需要根据图形特点从算法上做相应的处理,保证大致分割正确
9,分割成单个字符以后,如果字符比较正常 变形扭曲程序不大,可以直接用模式识别
如果变形扭曲较厉害,一般建议使用神经网络进行训练后再识别
如果是比较简单的验证码可以使用网上的一些组件,我常用的一个是OcrKingApi
不是太复杂的识别效果还可以,关键是免费的。使用文档可以看一下文库的链接