1.介紹Introduction
站在用戶的角度思考問題,與客戶深入溝通,找到東方網(wǎng)站設(shè)計與東方網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東方地區(qū)。
從OpenCV2.4開始,加入了新的類FaceRecognizer,我們可以使用它便捷地進(jìn)行人臉識別實(shí)驗(yàn)。本文既介紹代碼使用,又介紹算法原理。(他寫的源代碼,我們可以在OpenCV的opencv\modules\contrib\doc\facerec\src下找到,當(dāng)然也可以在他的github中找到,如果你想研究源碼,自然可以去看看,不復(fù)雜)
目前支持的算法有
Eigenfaces特征臉createEigenFaceRecognizer()
Fisherfaces createFisherFaceRecognizer()
LocalBinary Patterns Histograms局部二值直方圖 createLBPHFaceRecognizer()
下面所有的例子中的代碼在OpenCV安裝目錄下的samples/cpp下面都能找到,所有的代碼商用或者學(xué)習(xí)都是免費(fèi)的。
1.2.人臉識別Face
Recognition
對人類來說,人臉識別很容易。文獻(xiàn)[Tu06]告訴我們,僅僅是才三天的嬰兒已經(jīng)可以區(qū)分周圍熟悉的人臉了。那么對于計算機(jī)來說,到底有多難?其實(shí),迄今為止,我們對于人類自己為何可以區(qū)分不同的人所知甚少。是人臉內(nèi)部特征(眼睛、鼻子、嘴巴)還是外部特征(頭型、發(fā)際線)對于人類識別更有效?我們怎么分析一張圖像,大腦是如何對它編碼的?David Hubel和TorstenWiesel向我們展示,我們的大腦針對不同的場景,如線、邊、角或者運(yùn)動這些局部特征有專門的神經(jīng)細(xì)胞作出反應(yīng)。顯然我們沒有把世界看成零散的塊塊,我們的視覺皮層必須以某種方式把不同的信息來源轉(zhuǎn)化成有用的模式。自動人臉識別就是如何從一幅圖像中提取有意義的特征,把它們放入一種有用的表示方式,然后對他們進(jìn)行一些分類?;趲缀翁卣鞯娜四樀娜四樧R別可能是最直觀的方法來識別人臉。第一個自動人臉識別系統(tǒng)在[Kanade73]中又描述:標(biāo)記點(diǎn)(眼睛、耳朵、鼻子等的位置)用來構(gòu)造一個特征向量(點(diǎn)與點(diǎn)之間的距離、角度等)。通過計算測試和訓(xùn)練圖像的特征向量的歐氏距離來進(jìn)行識別。這樣的方法對于光照變化很穩(wěn)健,但也有巨大的缺點(diǎn):標(biāo)記點(diǎn)的確定是很復(fù)雜的,即使是使用最先進(jìn)的算法。一些幾何特征人臉識別近期工作在文獻(xiàn)[Bru92]中有描述。一個22維的特征向量被用在一個大數(shù)據(jù)庫上,單靠幾何特征不能提供足夠的信息用于人臉識別。
華為識別圖片中的文字的方法如下:
工具/原料:華為V30 PRO、Android 4.0.0.180、本地設(shè)置1.0。
1、首先打開手機(jī),選擇圖庫應(yīng)用。
2、然后打開需要識別文字的圖片,如下圖所示。
3、用兩個手指按住圖片不放。下方提取文字框中,就會出現(xiàn)識別的文字。
4、選擇提取文字框下方的全選按鈕,選中識別的文字。
5、點(diǎn)擊復(fù)制文字選項,復(fù)制選中的文字。
6、任意打開一個文字編輯工具,只需能輸入文字即可。
7、文本編輯區(qū),按下手指,出現(xiàn)粘貼選項后點(diǎn)擊。
8、可以看到,文字已成功識別。
在手機(jī)的設(shè)置界面,有一個叫輔助功能的設(shè)置,點(diǎn)擊進(jìn)去可以看到已安裝的輔助服務(wù),點(diǎn)擊具體的服務(wù)進(jìn)去可以看到該服務(wù)的一些描述,可以在此開啟該服務(wù),這也是唯一一個能開啟服務(wù)的地方。
開啟輔助功能相當(dāng)于開啟了一個服務(wù),在手機(jī)界面改變的時候,就能監(jiān)聽到該頁面的一些信息并且能拿到界面的一些控件,然后可以對控件進(jìn)行模擬點(diǎn)擊,從而實(shí)現(xiàn)我們想要的功能。
除此以外,不僅能夠?qū)Λ@取到的控件進(jìn)行模擬點(diǎn)擊,在Android7.0及以上的版本,我們可以模擬任意位置的點(diǎn)擊包括觸摸、滑動等等,就是說我們可以實(shí)現(xiàn)任何 人能夠進(jìn)行的操作 ,這個是很有用的,可以做出很多有意思的東西,如果再配上截圖、錄屏和圖像識別,就更有意思了。
模擬點(diǎn)擊,就是說我們的手機(jī)界面自己動,整個流程像是一只手在幫你操作一樣的;
新建一個 Service 繼承 AccessibilityService
然后去 AndroidManifest 文件里面去注冊一下這個Service
在 meta-data 節(jié)點(diǎn)下有個 resource 值,這是個xml文件,里面配置了該輔助的一些信息,在res目錄下新建一個文件夾,名字叫xml,然后新建一個xml文件,名字和 resource 配置的一樣就行了
里面配置了一些參數(shù),比如 notificationTimeout 是指定多少毫秒監(jiān)聽一次界面變化的, packageNames 是指定監(jiān)聽哪個應(yīng)用的,刪掉這個配置就是監(jiān)聽全局, description 是對于該輔助的描述,其他配置不管也罷。
然后在LuckMoneyService里面重寫一下onAccessibilityEvent方法
每當(dāng)界面改變的時候就會回調(diào)這個方法,通過 event 我們就可以獲取到界面的信息包括界面上的控件
上面的操作都比較基礎(chǔ),根據(jù)控件顯示的文字查找控件,找出來的肯定是TextView和Button了,根據(jù)ID查找控件,ID就是指的寫布局文件的時候設(shè)置的控件的ID
模擬觸摸就是可以模擬人的觸摸動作,也比較簡單
可以看到需要傳入 path 就是一個路徑嘛,模擬滑動的路徑,用canvas畫過畫的都知道這東西還是比較簡單的, startTime 就是多久后開始模擬事件, duration 就是該滑動的時間,其他回調(diào)什么的為空就可以了;
如何獲取控件的ID呢,而我又是如何知道界面上有哪些控件呢,可以通過一個工具來實(shí)現(xiàn),就是在sdk工具下面的一個叫 monitor 的工具,其實(shí)之前的AndroidStudio是帶這個工具的,但是后來界面上是沒有了,但是其實(shí)還在的
連上手機(jī),打開這個工具,手機(jī)上打開你要查看的界面,點(diǎn)擊工具手機(jī)的小手機(jī)的圖標(biāo),就會截屏,顯示出這個界面的信息
輔助功能能做的東西大概就上面這些了,能做出什么功能就靠自己的想象了
推薦閱讀: Android微信搶紅包輔助
工具/原料
安卓手機(jī)
人臉識別解鎖
方法/步驟
1
進(jìn)入手機(jī)設(shè)置,方式有點(diǎn)擊手機(jī)功能鍵,也可以在手機(jī)找到一個如圖的設(shè)置圖標(biāo)。點(diǎn)擊進(jìn)入手機(jī)設(shè)置。
在設(shè)置里有很多選項, 可能新手會看暈,你只需要查找到與安全字眼有關(guān)的,點(diǎn)擊進(jìn)入看看,若不是再返回再找找。
進(jìn)入手機(jī)安全選項設(shè)置,選擇屏幕安全保護(hù)或有一些手機(jī)叫“鎖定屏幕”。
選擇屏幕保護(hù)的密碼類型,可以是圖案九宮格,也可以是數(shù)字、人臉組合。
點(diǎn)擊人臉解鎖進(jìn)入人臉識別解鎖屏幕功能設(shè)置界面。進(jìn)入這個界面下面的操作所有的手機(jī)基本都一樣了。
在上一步中了解一下人臉識別解鎖屏幕功能需要注意的地方。光線,平視。
當(dāng)圍繞臉部一圈的小圓點(diǎn)都點(diǎn)亮了,就捕獲面部圖像成功。
為了人臉解鎖失敗進(jìn)不了手機(jī),還可以選擇備份解鎖??沈S圖案九宮格,可以數(shù)字密碼。
輸入數(shù)字密碼。點(diǎn)擊下一步。
再次輸入,點(diǎn)擊繼續(xù)。
大功造成了?,F(xiàn)在可以將你的手機(jī)關(guān)屏,然后再開屏,則會激活你的前置攝像頭,對正你的頭可以進(jìn)行人臉識別解鎖屏幕了。
用AndroidSDK中的Face Detector實(shí)現(xiàn)人臉識別
流程是這樣的:
1. 讀取一張圖片至Bitmap (從Resource中,或是從手機(jī)相冊中選取)
2. 使用FaceDetector API分析Bitmap,將探測到的人臉數(shù)據(jù)以FaceDetector.Face存儲在一個Face list中;
3.將人臉框顯示在圖片上。
假設(shè)已經(jīng)把驗(yàn)證碼圖片保存到本地了
我說一下驗(yàn)證碼識別的大致步驟吧
1,讀取圖片到bitmap
2,進(jìn)行灰度操作
3,進(jìn)行才二值操作
4,如果有干擾點(diǎn) 一般用濾波器或八鄰域去干擾點(diǎn)
5,如果有干擾線 如果是簡單的直線可以用掃描法,八后法等,復(fù)雜的應(yīng)該根據(jù)特點(diǎn)調(diào)整算法
6,如果有干擾色塊 也應(yīng)該想法去除
7,如果有較大的傾斜 需要進(jìn)行適當(dāng)校正
8,此時得到的應(yīng)該是比較干凈的字符了,如果是非粘連的可以直接用投影法分割成單個字符
如果有粘連,需要根據(jù)圖形特點(diǎn)從算法上做相應(yīng)的處理,保證大致分割正確
9,分割成單個字符以后,如果字符比較正常 變形扭曲程序不大,可以直接用模式識別
如果變形扭曲較厲害,一般建議使用神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練后再識別
如果是比較簡單的驗(yàn)證碼可以使用網(wǎng)上的一些組件,我常用的一個是OcrKingApi
不是太復(fù)雜的識別效果還可以,關(guān)鍵是免費(fèi)的。使用文檔可以看一下文庫的鏈接