電話の前面カメラを表示する基本的なアプリを作成しました。Google Servies の顔検出器を使用して、顔の周りに四角形を描画する必要があります (カメラ プレビュー データを含む FrameLayout 上)。顔検出器の基本的な使い方と、画像ビューで顔を検出する方法を知っています。アプリのフレーム レイアウトに顔検出を適用するのを手伝ってくれる人はいますか? どうもありがとう。
私のコード:
public class MainActivity extends AppCompatActivity {
private ImageSurfaceView mImageSurfaceView;
private Camera camera;
private FrameLayout cameraPreviewLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
cameraPreviewLayout = (FrameLayout)findViewById(R.id.camera_preview);
camera = checkDeviceCamera();
mImageSurfaceView = new ImageSurfaceView(MainActivity.this, camera);
mImageSurfaceView.draw(canvas);
cameraPreviewLayout.addView(mImageSurfaceView);
}
private Camera checkDeviceCamera() {
Camera mCamera = null;
try {
mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); // set the cameras to the front (selfi)
} catch (Exception e) {
e.printStackTrace();
}
return mCamera;
}
}
ImageSurfaceView クラス:
public class ImageSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private Camera camera;
private SurfaceHolder surfaceHolder;
public ImageSurfaceView(Context context, Camera camera) {
super(context);
this.camera = camera;
this.surfaceHolder = getHolder();
this.surfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
this.camera.setPreviewDisplay(surfaceHolder);
this.camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
this.camera.startPreview();
this.camera.release();
}