这几天公司事情不多,把前段时间的弄得一个小项目整理一下,之前曾经用opencv做过人脸识别的相关项目,说实话效果不好,这次用了一下face++的接口实现,比之前的效果好不少,而且也没什么难度,现在就整理一下代码,做个备份吧。
在真正使用之前需要到face++ 网站下载faceppsdk.jar文件,然后倒入eclipse中
以下是布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Bing_By_Fj" >
<Button
android:id="@+id/facedectbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Face++检测" />
<FrameLayout
android:id="@+id/bing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</FrameLayout>
<TextView
android:id="@+id/smiliar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:textSize="25sp"
android:text="检测值" />
<ImageView
android:id="@+id/takepicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:src="@drawable/light1_001" />
<TextView
android:id="@+id/information"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="信息"
android:textSize="25sp" />
</RelativeLayout>
首先需要初始化 HttpRequests mRequests;
mRequests=new HttpRequests(String apiKey,String apiSecret);
这里的apikey 和apisecret需要申请;
进入程序后初始化摄像头,并在surfaceview上预览,
mCamera = Camera.open(FindFrontCamera());
cameraLayout.addView(new cameraView(bFj, mCamera));
此处cameraView 为
class cameraView extends SurfaceView implements Callback{
Size mPreviewSize;
List<Size> mSupportedPreviewSizes;
public cameraView(Context context,Camera camera) {
super(context);
// TODO Auto-generated constructor stub
SurfaceHolder surfaceHolder;
mCamera=camera;
surfaceHolder=getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
mSupportedPreviewSizes=mCamera.getParameters().getSupportedPreviewSizes();
}
@SuppressLint("NewApi")
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {