999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android系統(tǒng)下OpenCV的人臉檢測(cè)模塊的設(shè)計(jì)

2012-06-09 10:26:10公衍宇
電子設(shè)計(jì)工程 2012年20期
關(guān)鍵詞:利用檢測(cè)信息

公衍宇, 郭 琦 ,于 超

(1.河北工業(yè)大學(xué) 信息工程學(xué)院,天津 300380;2.河北工業(yè)大學(xué) 機(jī)械工程學(xué)院,天津 300380)

Android是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),本意為“機(jī)器人”。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序——移動(dòng)電話工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。OpenCV于1999年由Intel建立,現(xiàn)在由Willow Garage提供支持。OpenCV是一個(gè)基于BSD許可證授權(quán)(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows、Mac OS和Android操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列C函數(shù)和少量C++類(lèi)構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法[1-2]。Android應(yīng)用程序是通過(guò)Android SDK(Software Develo-pment Kit)利用Java編程語(yǔ)言進(jìn)行開(kāi)發(fā)的,此虛擬機(jī)支持JNI,同時(shí)伴隨著Android NDK的發(fā)布,使開(kāi)發(fā)者利用第三方C/C++庫(kù)協(xié)助編寫(xiě)Android程序成為可能,如OpenCV庫(kù)便可方便地應(yīng)用在Android系統(tǒng)中[3]。

1 OpenCV移植到Android

1.1 軟件開(kāi)發(fā)環(huán)境的搭建

OpenCV從2.2版本以后支持Android,本設(shè)計(jì)的編譯環(huán)境PC端為ubuntu 10.10,所用OpenCV版本為2.2 1。OpenCV只提供C/C++、Python接口,這就涉及到Java與C/C++混合編程、Java程序與C/C++程序互相調(diào)用的問(wèn)題,而Android NDK很好地解決了這一問(wèn)題,它提供了一系列的工具,幫助開(kāi)發(fā)者快速開(kāi)發(fā)C(或C++)的動(dòng)態(tài)庫(kù),并能自動(dòng)將so和java應(yīng)用一起打包成apk。同時(shí)還集成了交叉編譯器,并提供了相應(yīng)的mk文件隔離CPU、平臺(tái)、等差異,開(kāi)發(fā)人員只需要簡(jiǎn)單修改mk文件 (指出 “哪些文件需要編譯”、“編譯特性要求”等),就可以創(chuàng)建出so。

官方提供的Android NDK R4版本對(duì)于有些OpenCV中使用的一些C++概念不支持Cryta x為我們提供了一種支持OpenCV的Android NDK修訂版。本設(shè)計(jì)Android NDK所使用的版本為android-ndk-r4-linux-cry-tax-4在開(kāi)始編譯安裝OpenCV庫(kù)之前,需要在PC機(jī)Ubuntu操作系統(tǒng)下安裝如:cmake、buid-essential等編譯OpenCV庫(kù)需要用到的工具。在此環(huán)境下編譯并安裝OpenCV庫(kù)。

1.2 利用NDK編譯生成OpenCV靜態(tài)庫(kù)

OpenCV現(xiàn)已官方支持在Android環(huán)境下的開(kāi)發(fā),OpenCV2.2源文件包中包含一android文件夾,在此文件夾中包括一些官方提供的編譯文件,利用NDK并借助這些編譯文件對(duì)OpenCV源碼進(jìn)行編譯,就可生成適用于在Android環(huán)境下運(yùn)行的靜態(tài)庫(kù)。在編譯之前需要解壓縮android-ndkr4-linux-x86-crytax-4.tar.bz2,完成修訂版本 NDK 的安裝。 進(jìn)入OpenCV2.2內(nèi)的android文件夾下,執(zhí)行 “mkdir build”指令,完成創(chuàng)建build文件夾,然后執(zhí)行 “cd build”指令進(jìn)入build文件夾,隨后執(zhí)行“cmake..”指令生成makefile編譯文件,最后執(zhí)行“make”指令對(duì)其進(jìn)行編譯,編譯完成后將生成OpenCV靜態(tài)庫(kù),用于在Android環(huán)境下基于OpenCV的Android應(yīng)用軟件開(kāi)發(fā)。

2 設(shè)計(jì)整體框架

在Android系統(tǒng)下基于OpenCV的人臉檢測(cè)實(shí)現(xiàn)需通過(guò)Android NDK工具集將利用JNI編寫(xiě)的本地代碼組件嵌入到Android應(yīng)用程序中,所以整個(gè)實(shí)現(xiàn)過(guò)程分為兩個(gè)步驟首先,通過(guò)JNI與OpenCV接口編寫(xiě)本地C/C++代碼,并利用Android NDK對(duì)其進(jìn)行編譯生成Java可調(diào)用的共享庫(kù),接下來(lái)利用Android應(yīng)用程序框架編寫(xiě)Java端代碼,最后通過(guò)Android SDK生成Android應(yīng)用程序,整體設(shè)計(jì)框架如圖1所示。

圖1 整體設(shè)計(jì)框架Fig.1 Overall design framework

打開(kāi) eclipse,新建一個(gè) workspace,在 Window->Preferences中設(shè)置好Android SDK的路徑。然后新建一個(gè)Android項(xiàng)目,Build Target選擇Android2.2,命名為"facedetect",活動(dòng)名改為“facedetect”,Package name 中 填 寫(xiě) com.testopencv.facedetect,最后點(diǎn)擊finish。

2.1 利用JNI編寫(xiě)C++OpenCV代碼

首先在工程目錄下新建jni文件夾,新建C++源代碼文件并引入此頭文件,編寫(xiě)函數(shù)實(shí)現(xiàn)代碼。

分類(lèi)器文件與圖片文件的路徑分別在Java端利用String靜態(tài)變量進(jìn)行存儲(chǔ),在本地代碼端需要得到此String變量的UTF-8形式用來(lái)加載分類(lèi)器和圖片文件,這就需要通過(guò)JNI來(lái)實(shí)現(xiàn)。關(guān)鍵代碼如下:

以上代碼可得到分類(lèi)器的絕對(duì)路徑,圖片文件的存儲(chǔ)絕對(duì)路徑也可以此方式得到[4]。

2.2 人臉識(shí)別函數(shù)的實(shí)現(xiàn)

人臉檢測(cè)是指在輸入圖像中將人臉從龐雜的背景中提取出來(lái),并返回人臉在圖像中的位置、大小等信息。首先將彩色圖像轉(zhuǎn)換為灰度圖像,然后對(duì)圖像進(jìn)行直方圖均衡化,最后利用分類(lèi)器對(duì)圖像中某一區(qū)域是否為人臉進(jìn)行檢測(cè)。OpenCV將分類(lèi)器信息利用xml文件進(jìn)行存儲(chǔ),同時(shí)OpenCV自帶分類(lèi)器訓(xùn)練程序:haartrfimng.exe,可以使用它來(lái)方便的進(jìn)行haar-like特征分類(lèi)器的訓(xùn)練。將分類(lèi)器xm l文件放在Java工程目錄下的asset文件夾內(nèi),當(dāng)安裝應(yīng)用時(shí),利用流操作將此文件寫(xiě)入sd卡上的指定路徑下,同時(shí)將此途徑存儲(chǔ)在一靜態(tài)變量String,人臉檢測(cè)函數(shù)實(shí)現(xiàn)關(guān)鍵代碼如下:

檢測(cè)到的人臉位置信息將會(huì)存入數(shù)據(jù)類(lèi)型為vector<RECT>的faces中,最后通過(guò)迭代將檢測(cè)到人臉的矩形信息分別換算成空心圓信息存入一個(gè)int數(shù)組,此空心圓信息包括圓心的x坐標(biāo)、y坐標(biāo)以及半徑。

2.3 設(shè)置Java端人臉位置信息

在C/C++端得到人臉位置信息后,需要將此信息傳入Java端進(jìn)行UI更新,這依然需要通過(guò)JNI來(lái)完成。在IntentService類(lèi)中新建一int數(shù)組用來(lái)存放檢測(cè)到的人臉位置信息,當(dāng)本地人臉檢測(cè)操作執(zhí)行完成后對(duì)其進(jìn)更新與讀取,關(guān)鍵代碼如下:

2.4 腳本文件編寫(xiě)

有兩個(gè)腳本文件需要編寫(xiě),分別是Android.mk和Application.mk文件。Android.mk文件描述了需要NDK進(jìn)行編譯的源文件,以及所要形成的組件,Application.mk文件描述一些關(guān)于本應(yīng)用的輔助編譯信息,這個(gè)編譯文件是可選的。

在Java工程目錄下的jni文件夾下新建Android.mk文件。 打開(kāi)此文件,首先定 LOCAL_PATH:=$(call my-dir)”, 用來(lái)定位源代碼文件所在目錄;其次 “include$(CLEAR_VARS)”,用來(lái)清除許多LOCAL_XXX變量,因?yàn)樗芯幾g控制文件都是在一個(gè)GNU Make執(zhí)行上下文中進(jìn)行解析,而此時(shí)所有變量都是全局可見(jiàn)的,所以需要這一操作;由于利用第三方庫(kù)OpenCV協(xié)助開(kāi)發(fā),需要指定此庫(kù)通過(guò)NDK編譯好的靜態(tài)版本的頭文件、靜態(tài)庫(kù)文件的搜索路徑與連接標(biāo)記,所以編寫(xiě)如下如下6條語(yǔ)句:

最后需說(shuō)明所要產(chǎn)生的是靜態(tài)庫(kù)還是動(dòng)態(tài)庫(kù),由于動(dòng)態(tài)庫(kù)為所需,故編寫(xiě)如下代碼:

include$(BUILD_SHARED_LIBRARY)

在Java工程目錄下的jni文件夾下新建Application.mk文件,由于需要在ARM-V7構(gòu)架的CPU上運(yùn)行,所以通過(guò)定義“APP_ABI:=armeabi-v7a“來(lái)指定。 打開(kāi) Cygwin,進(jìn)入本Android工程目錄下的jni文件中,執(zhí)行”$NDK/ndk-build”命令,執(zhí)行完畢后將生成共享文件libface detect.so。

3 結(jié) 論

人臉檢測(cè)的實(shí)現(xiàn)充分說(shuō)明了在Android系統(tǒng)下利用OpenCV進(jìn)行計(jì)算機(jī)視覺(jué)研究與開(kāi)發(fā)的可行性與實(shí)用性,雖然由于Android NDK工具還處于初級(jí)發(fā)展階段,不夠成熟,以及硬件配置的差距,致使最后人臉檢測(cè)操作的運(yùn)行速度相對(duì)較慢,但隨著NDK的發(fā)展,利用其進(jìn)行編譯的本地代碼在Android系統(tǒng)中的運(yùn)行將更加高效,同時(shí)越來(lái)越強(qiáng)大的硬件配置也將給予有力支持。Android系統(tǒng)如今發(fā)展迅速,許多第三方庫(kù)現(xiàn)已提供Android通用編程接口,這為Android應(yīng)用軟件開(kāi)發(fā)人員提供極大的便利,OpenCV也會(huì)在下一版本提供此接口,但對(duì)于計(jì)算機(jī)視覺(jué)算法研究人員以及對(duì)軟件深度開(kāi)發(fā)人員來(lái)說(shuō),利用JNI編寫(xiě)本地代碼,NDK編譯本地代碼的方式還是必須的,并且這一方式也更加靈活。

[1]Gray Bradski,Adrian Kaebler.Learning OpenCV:Computer Vision with the OpenCV Library[M].USA:O Reilly media,2008.

[2]Willow Garage.OpenCV wiki[EB/OL].[2012-05](2012-07).http://opencv.willowgarage.com/wiki/Welcome.

[3]Google.Android Guide[EB/OL].[2012-02](2012-07).http://developer.android.com/guide/index.htm l.

[4]張瑩,李勇平,敖新宇.基于OpenCV的通用人臉檢測(cè)模塊設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2011(1):97-101.ZHANG Ying,LI Yong-ping,AO Xin-yu.Common face detection module design based on OpenCV[J].Computer Eng ineering and Science,2011(1):97-101.

[5]韓露,李祖樞,陳東義.一種Java與OpenCV結(jié)合實(shí)現(xiàn)的目標(biāo)檢測(cè)模塊[J].計(jì)算機(jī)應(yīng)用,2008(3):773-775.HAN Lu,LI Zu-shu,CHEN Dong-yi.A Java and OpenCV combination of the goal detection module[J].Computer Applications,2008(3):773-775.

[6]任俊偉,林東岱.JNI技術(shù)實(shí)現(xiàn)跨平臺(tái)開(kāi)發(fā)的研究[J].計(jì)算機(jī)應(yīng)用研究,2005(7):180-184.REN Jun-wei,LIN Dong-dai.JNI technology to achieve crossplatform development[J].Computer Applications Research,2005(7):180-184.

[7]陳勇飛,劉新明.基于膚色和類(lèi)Harr特征的人臉圖像的人臉檢測(cè)[J].計(jì)算機(jī)工程與應(yīng)用,2008(33):174-180.CHEN Yong-fei,LIU Xin-ming.Face images based on skin color and class Harr features face detection[J].Computer Engineering and Applications,2008(33):174-180.

[8]張靠社,張?jiān)鰪?qiáng),楊寶杰.基于Hamilton能量函數(shù)含TCSC的電力系統(tǒng)非線性控制[J].陜西電力,2009(3):23-26.ZHANG Kao-she,ZHANG Zeng-qiang,YANG Bao-jie.Nonlinear control for power system with TCSC based on hamiltonian energy function[J].Shaanxi Electric Power,2009(3):23-26.

[9]孟洪波,王亞軍,方濤.氣相色譜法檢測(cè)無(wú)水肼中水含量的不確定度評(píng)定[J].火箭推進(jìn),2011(3):68-72.MENG Hong-bo,WANG Ya-jun,F(xiàn)ANG Tao.Uncertainty evaluation of detecting the water content in anhydrous hydrazine with gas chromatography[J].Journal of Rocket Propulsion,2011(3):68-72.

猜你喜歡
利用檢測(cè)信息
利用min{a,b}的積分表示解決一類(lèi)絕對(duì)值不等式
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
利用一半進(jìn)行移多補(bǔ)少
利用數(shù)的分解來(lái)思考
Roommate is necessary when far away from home
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
展會(huì)信息
主站蜘蛛池模板: 国产91丝袜在线播放动漫| 超清人妻系列无码专区| 国产97公开成人免费视频| 国产成人啪视频一区二区三区| 91福利在线观看视频| 国产91小视频| 青草娱乐极品免费视频| 九色在线视频导航91| 幺女国产一级毛片| 亚洲天堂网在线观看视频| 韩日无码在线不卡| 国产AV无码专区亚洲精品网站| 亚洲va欧美va国产综合下载| 99re热精品视频中文字幕不卡| 欧美一级99在线观看国产| 中国美女**毛片录像在线| 欧美日韩亚洲国产| 久久免费看片| 国产精品久久久久婷婷五月| 伊在人亚洲香蕉精品播放| 国产欧美日韩视频一区二区三区| 亚洲熟妇AV日韩熟妇在线| 91年精品国产福利线观看久久| 热re99久久精品国99热| 日韩精品一区二区三区免费在线观看| 国产区精品高清在线观看| 久久久久久久久久国产精品| 综合色区亚洲熟妇在线| 国产真实二区一区在线亚洲| 无码丝袜人妻| 欧美成人手机在线视频| 亚洲一区毛片| 亚洲动漫h| 国产视频一区二区在线观看 | 9啪在线视频| 在线免费观看AV| a级毛片网| 成人字幕网视频在线观看| 为你提供最新久久精品久久综合| 国产精品19p| 狠狠久久综合伊人不卡| 精品视频第一页| 欧美成人二区| 国产日本一区二区三区| 91欧美在线| av午夜福利一片免费看| 婷婷丁香在线观看| 日本午夜三级| 乱系列中文字幕在线视频| 男女猛烈无遮挡午夜视频| 亚洲国产中文综合专区在| 国产成人三级| 91在线中文| 在线免费无码视频| 五月婷婷激情四射| 亚洲第一页在线观看| 亚洲色图欧美激情| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲男人天堂久久| 国产精品视频999| 一区二区三区四区精品视频 | 国产亚洲视频中文字幕视频| 色婷婷国产精品视频| 国产精品白浆无码流出在线看| 国产精品极品美女自在线看免费一区二区 | 大学生久久香蕉国产线观看 | 免费观看亚洲人成网站| 伊人精品成人久久综合| 国产理论一区| 9966国产精品视频| 少妇高潮惨叫久久久久久| 国产精品污视频| 国产永久在线观看| 中文成人在线视频| 色香蕉网站| 色播五月婷婷| 91久久偷偷做嫩草影院精品| 成年女人a毛片免费视频| 亚洲av片在线免费观看| 国产精品视频白浆免费视频| 免费aa毛片| 97免费在线观看视频|