国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

JNI技術(shù)在基于OpenCV的人臉與微笑檢測中的應(yīng)用

2017-03-06 00:19王嘉鑫鄒科文陳義明
軟件導(dǎo)刊 2017年1期
關(guān)鍵詞:人臉檢測

王嘉鑫+鄒科文+陳義明

摘要摘要:人臉識別技術(shù)是當(dāng)前人工智能中較為熱門的一個(gè)分支,已經(jīng)有許多開源的視覺庫為其奠定了良好基礎(chǔ),如OpenCV等,然而OpenCV在Java環(huán)境下有諸多不便。為了解決這一問題,介紹了JNI技術(shù),以及在Java環(huán)境下,如何通過JNI調(diào)用OpenCV庫實(shí)現(xiàn)人臉與微笑檢測。實(shí)驗(yàn)結(jié)果表明,將JNI應(yīng)用于Java虛擬機(jī)的人臉檢測,可獲得更高的人臉檢測速度。

關(guān)鍵詞關(guān)鍵詞:OpenCV;人臉檢測;微笑檢測;JNI

DOIDOI:10.11907/rjdk.162330

中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2017)001011502

隨著人工智能技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺等領(lǐng)域也逐漸成為計(jì)算機(jī)科學(xué)中的熱點(diǎn)問題,人臉檢測便是計(jì)算機(jī)視覺中的一個(gè)分支。OpenCV作為一個(gè)開源的視覺庫,提供了不少關(guān)于人臉檢測的模型與處理接口,而大部分接口與算法均采用C/C++語言編寫。Java雖有其跨平臺的巨大優(yōu)勢,但是這種特性也給Java帶來了局限性,在調(diào)用動態(tài)數(shù)據(jù)庫文件時(shí)存在不便。因此,通過JNI工具,可以利用C/C++語言的特性彌補(bǔ)Java的不足[13]。

1相關(guān)技術(shù)原理

1.1JNI技術(shù)分析

JNI(Java Native Interface)提供了若干API 實(shí)現(xiàn)Java與其它語言的通信(主要是C/C++)。從Java 1.1開始,JNI標(biāo)準(zhǔn)成為Java平臺的一部分,它允許Java和其它語言編寫的代碼進(jìn)行交互。然而使用Java與本地已編譯的代碼交互,通常會喪失平臺可移植性[45]。

通常遇到以下幾種情況需要使用JNI:①所開發(fā)的程序需要用到其它平臺屬性,但在Java的標(biāo)準(zhǔn)庫中不支持此屬性;②程序?qū)τ谶\(yùn)行效率要求較高,因此希望能用較低級的語言(如C/C++)來實(shí)現(xiàn);③Java已經(jīng)擁有實(shí)現(xiàn)需要的程序和庫,希望C/C++對其直接進(jìn)行調(diào)用[67]。

1.2JNI技術(shù)架構(gòu)

JNI允許運(yùn)行在Java虛擬機(jī)上的應(yīng)用程序調(diào)用其它語言(如C/C++語言)來編寫需要的方法或類庫,也能將Java虛擬機(jī)嵌入到本地應(yīng)用程序中。

圖1是JNI在本地應(yīng)用程序與Java應(yīng)用之間各自扮演的角色圖。從圖中可以看出,JNI作為Java與C/C++函數(shù)庫之間的橋梁,可以實(shí)現(xiàn)Java代碼與C/C++庫函數(shù)當(dāng)中本地代碼之間的交互。然而JNI沒有改變Java語言的屬性,只是讓Java語言擁有一種能夠?qū)ν庹{(diào)用的形式[89]。

1.3OpenCV介紹

OpenCV(Open Source Computer Vision Library)是一個(gè)基于BSD許可發(fā)行的跨平臺計(jì)算機(jī)視覺庫。它輕量而且高效,由C函數(shù)與C++類構(gòu)成,同時(shí)提供了Python、Java等語言的接口,可實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV中對于人臉的檢測方法是基于處理成的灰度圖像的弱特征檢測方法。該方法建立在Haar特征[10]檢測方法基礎(chǔ)上,可以獲得檢測人臉的實(shí)時(shí)處理速度。

OpenCV中也提供了訓(xùn)練分類器[1112]的程序及方法來檢測特征。使用者可以將此方法應(yīng)用于一些項(xiàng)目中的二次開發(fā),比如雙目視覺的三維重構(gòu)、物體識別,協(xié)助機(jī)器人完成復(fù)雜任務(wù),以及在智能監(jiān)控中的人臉檢測、智能交通中的行人檢測等。

2開發(fā)工具選擇

選用的工具是eclipse,Java版本為JDK1.7,C++使用的是VS2010。另外PC端需要具備內(nèi)置或外置攝像頭,PC機(jī)配置為Inter Core i5-3230M CPU 2.6GHz。

3實(shí)現(xiàn)過程

從圖2中編寫JNI代碼的大致步驟可以看出Java需要將字節(jié)碼文件通過javah生成頭文件,再與C代碼共同生成動態(tài)鏈接庫,進(jìn)而與Java中的代碼進(jìn)行交互。

3.4人臉檢測實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)結(jié)果如圖3以及表1所示,Java捕獲的圖像上會圈出特征檢測出的人臉,并在控制臺輸出人臉的X、Y坐標(biāo)以及微笑值。微笑值越高代表被檢測的人臉表情越開心。表2使用JNI檢測明顯比單獨(dú)從Java視頻流中獲取圖像檢測人臉?biāo)俣雀?。因此,將JNI應(yīng)用于Java虛擬機(jī)的人臉檢測中,可以幫助后臺進(jìn)行高效的圖片信息處理。

第1期 侯賀,馬林,鄭偉:基于大數(shù)據(jù)的微課評價(jià)模型研究軟 件 導(dǎo) 刊2017年標(biāo)題

猜你喜歡
人臉檢測
基于人臉特征定位的SNS網(wǎng)站應(yīng)用組件研究與設(shè)計(jì)
修武县| 长寿区| 南昌市| 文登市| 满洲里市| 嘉定区| 都安| 建水县| 清镇市| 保德县| 应城市| 靖远县| 泰和县| 织金县| 高尔夫| 西乌珠穆沁旗| 垫江县| 久治县| 海门市| 珲春市| 阿拉善左旗| 宁都县| 锡林郭勒盟| 徐水县| 刚察县| 尼勒克县| 且末县| 宣汉县| 建湖县| 大同县| 大渡口区| 芦山县| 鸡泽县| 天台县| 合川市| 奇台县| 和平区| 无极县| 五常市| 鄂托克前旗| 唐河县|