Tensorflow摄像头捕获

时间:2018-09-23 04:32:38

标签: java android tensorflow

我最近在使用演示时尝试捕获。 由于相机是在片段上运行的,因此当我捕获frameLayout时,它只是捕获了相机片段的背景。

在运行Tensorflow detect app演示时如何捕获相机图像本身?!

有一个onCreate方法,可在CameraActivity.java中设置Fragment

 @Override
  protected void onCreate(final Bundle savedInstanceState) {
    LOGGER.d("onCreate " + this);
    super.onCreate(null);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    setContentView(R.layout.activity_camera);

    if (hasPermission()) {
      setFragment();
    } else {
      requestPermission();
    }
  }

下面是setFragment()函数。(将摄像机设置在FrameLayout的顶部)

protected void setFragment() {
String cameraId = chooseCamera();
if (cameraId == null) {
  Toast.makeText(this, "No Camera Detected", Toast.LENGTH_SHORT).show();
  finish();
}

Fragment fragment;
if (useCamera2API) {
  CameraConnectionFragment camera2Fragment =
      CameraConnectionFragment.newInstance(
          new CameraConnectionFragment.ConnectionCallback() {
            @Override
            public void onPreviewSizeChosen(final Size size, final int rotation) {
              previewHeight = size.getHeight();
              previewWidth = size.getWidth();
              CameraActivity.this.onPreviewSizeChosen(size, rotation);
            }
          },
          this,
          getLayoutId(),
          getDesiredPreviewFrameSize());

  camera2Fragment.setCamera(cameraId);
  fragment = camera2Fragment;
} else {
  fragment =
      new LegacyCameraConnectionFragment(this, getLayoutId(), getDesiredPreviewFrameSize());
}

getFragmentManager()
    .beginTransaction()
        .replace(R.id.container, fragment)
        .commit();
  }

有关此代码的完整源代码, 链接如下。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/CameraActivity.java

感谢您的时间和事先的帮助。

0 个答案:

没有答案