android-ncnn-nanodet代码的ndkcamera功能抽取复用
以往的 Camera2 调用摄像头传统实现流程很麻烦,并且效率低,然后在android-ncnn-nanodet项目中ncnn官方开发封装了NDKCamera功能,他主要是通过c++操纵摄像头。
然后我们就可以白嫖这个功能。
- jni文件夹下边导入ncnn,opencv依赖,并且将ndkcamera.cpp与ndkcamera.h文件放进来,编写cmakelists.txt文件将他们一起编译
- nanodetncnn.cpp文件中暴露了几个基本方法,他是提供给java端调用的接口,里边有打开关闭摄像头,捕获每一帧并且处理每一帧,切换前后摄像头
- 其中的MyNdkCamera::on_image_render方法传入的rgb就是捕获的每一帧,我们在这里处理这个帧就可以了。
- 首先使用surfaceview搭建好页面
- 然后MainActivity extends Activity implements SurfaceHolder.Callback
- onCreate中获取SurfaceView并且将他绑定到cameraView.getHolder().addCallback(this);中
- 然后直接调用NanoDetNcnn中的方法即可
代码链接:
https://gitee.com/xiaoxiaojieya/study_notes/tree/master/base_android/005_realtime_surfaceview