之前用Android內建的臉部偵測API玩弄了一下,但那是靜態檢測的,也就是說人為先給定一張圖片然後讓它來檢測。今天想起之前看到過有一個開源的JavaCV項目,並且它內建了一些常式,剛好有一個也是關於臉部偵測的,於是想試試效果怎樣,順便記錄一下怎麼使用這些庫,下面是這個庫的使用方法。
建立一個工程,在工程的根目錄下建立檔案夾libs,在libs下再建立檔案夾armeabi,將javacv-bin下的javacpp.jar和javacv.jar複製到libs目錄下,將解壓後的javacv-android-arm.jar的內容複寫到armeabi目錄下,將OpenCV-2.3.1-android-arm檔案夾下的庫複製到armeabi目錄下。右鍵工程--->properties--->java build path---->libraries----->add External JARS將javacpp.jar和javacv.jar添加進來。使用java-bin的samples下的FacePreview.java來測試。最後將opencv裡的haarcascade_frontalface_alt.xml檔案複製到工程的源碼目錄下。FacePreview.java檔案的內容就不貼出來了。在工程的AndroidManifest.xml檔案裡添加網路攝影機使用的許可權:
1 <uses-permission android:name="android.permission.CAMERA" />
2 <uses-feature android:name="android.hardware.camera" />
3 <uses-feature android:name="android.hardware.camera.autofocus" />
好了,可以運行該程式了。
由於截出來的圖一片黑色,所以就不貼圖了。從運行效果來看確實可以檢測出人臉,而且是動態檢測的,但檢測速度不是很理想。JavaCV這個項目可以在code.google裡找到。