CameraX tensorflow 安卓 综合实例app

佛系代码,能跑就好

上来先发一下软件的样子功能。注意!nnapi只能在安卓8.1及以上开启,我没有写检测,但是在测试的时候请注意手机安卓版本。
注意!nnapi只能在安卓8.1上开启
App链接:pan.baidu.com/s/1xmESfnc7r2SgSpYom2-X4Q
提取码:45hw

说明下使用的版本,本app使用java编写。

 def camerax_version = "1.0.0-alpha10"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    // If you want to use the CameraX View class
    implementation "androidx.camera:camera-view:1.0.0-alpha08"
    // If you want to use the CameraX Extensions library
    implementation "androidx.camera:camera-extensions:1.0.0-alpha08"
    // If you want to use the CameraX Lifecycle library
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"

    implementation('org.tensorflow:tensorflow-lite:0.0.0-nightly') { changing = true }
    implementation('org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly') { changing = true }
    implementation('org.tensorflow:tensorflow-lite-support:0.0.0-nightly') { changing = true }

下面我就只放相机主要部分的代码啦

  ListenableFuture cameraProviderFuture = ProcessCameraProvider.getInstance(context);

        CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build();
        cameraProviderFuture.addListener(new Runnable() {
            @Override
            public void run() {
                try {
                    ProcessCameraProvider processCameraProvider= (ProcessCameraProvider) cameraProviderFuture.get();
                    preview = new Preview.Builder()
                            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
                            .setTargetRotation(Mpreview.getDisplay().getRotation())
                            .build();
                    preview.setSurfaceProvider(Mpreview.getPreviewSurfaceProvider());

                    
                    imageCapture = new ImageCapture.Builder()
                            .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
                            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
                            .setTargetRotation(Mpreview.getDisplay().getRotation())
                            .build();

                    imageAnalyzer = new ImageAnalysis.Builder()
                            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
                            .setTargetRotation(Mpreview.getDisplay().getRotation())
                            .build();
                    ExecutorService cameraExecutor = Executors.newSingleThreadExecutor();
                    imageAnalyzer.setAnalyzer(cameraExecutor, new ImageAnalysis.Analyzer() {
                        @SuppressLint("UnsafeExperimentalUsageError")
                        @Override
                        public void analyze(@NonNull ImageProxy image) {
                            Log.d("分析","start");
                            classification(image);//调用图像分类的函数
                            image.close();
                        }
                    });

                    processCameraProvider.unbindAll();
                    processCameraProvider.bindToLifecycle((LifecycleOwner) context,cameraSelector,preview,imageCapture,imageAnalyzer);
                } catch (ExecutionException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        }, ContextCompat.getMainExecutor(context));

学过tensorflow lite的同学一定了解过那个图像识别的demo,想必那复杂的结构第一次看,你们也看晕了吧,至少我晕了(@_@; )。这里就吹一下cameraX,使用上cameraX之后整个流程就瞬间清爽了很多。
整个项目会上传到csdn,喜欢的同学可以自己下载看看啦。
https://download.csdn.net/download/weixin_44544354/12280656
佛系代码,能跑就好emmmm要是代码写的不漂亮欢迎指正(* ̄3 ̄)╭

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值