【问题标题】:how to do image analysis on android camera api如何在android相机api上进行图像分析
【发布时间】:2020-11-16 12:49:22
【问题描述】:

我目前正在制作一个文档扫描仪应用程序,该应用程序可以绘制在相机预览中检测到的页面。为此,我一直在探索许多相机 API,并且似乎发现 CameraX 是最简单的,因为它大大减少了开发人员的工作量。我面临的一些问题是:

  1. 几乎所有带有 ImageAnalysis 的 CameraX 示例都在 科特林。即便如此,他们似乎都只是进行初步分析 比如计算亮度。我想做的是画一个 预览本身的页面边框。有人可以帮助我或 引导我找到一些资源,让我实现这一目标。例如, 我什至如何在相机预览上画画? Opencv 需要位图 做所有的图像处理,所以我应该使用哪个视图(例如: SurfaceView、TextureView、PreviewView 等...)?我已经尝试了其中的大多数,但它们似乎都在这里和那里给出错误。
  2. 这不是一个直接的问题,但最初我是使用 OpenCV 来实现的 应用程序,但我的目标是最终从头开始实现它 使用 OpenCV 会大大增加 APK 的大小。我有点 熟悉一些算法及其工作原理(例如:Canny 边缘,哈里斯角,逆透视变换等),但我需要 帮助在 android(最好是 java)中实际实现它们,因为那是我完全迷失的地方。

尽管我对 Kotlin 完全陌生,但我阅读了有关 Kotlin 的大部分文档,观看了 CameraX 谷歌主题演讲活动,并阅读了用于设置 kotlin 的 codelabs 教程。当我明白了这一切后,我在 github 上查看了 google 提供的名为 CameraX Basic 的官方示例应用程序,我完全迷失了。他们在那里放了很多东西,以至于我什至很难理解它。无论我在哪里看,没有一个像样的例子适合我的需要。另外,在他们的文档中,他们在 kotlin 和 java 中都有实现,但他们只有 java 中的示例应用程序。

总之,我无法理解如何将自己的 ImageAnalysis 添加到 CameraX 以扫描文档并保存图像(因此我可以稍后提供更多选项,例如导出为 pdf 等...)

【问题讨论】:

  • 我理解您的沮丧和失落感,但您的问题过于广泛,我们无法在此为您提供帮助。不幸的是,你必须从某个地方开始,然后问一个更具体的问题
  • 我在java中使用tflite和mlkit完成了它,但不是opencv ..
  • 您能帮忙将图形添加到 CameraX 的预览中吗?一旦我弄清楚了,我将解决下一个问题
  • @Felix 你能分享任何对你有帮助的资源或网站吗?另外,这也是我的主要问题,您是如何将图像分析与相机 API 集成的,您是如何在相机预览中绘制页面边框的?
  • @Ayush Koul 看看我的 github 仓库 link

标签: android opencv android-camerax


【解决方案1】:

我认为您的主要问题是更大的OpenCV 大小。如果编译所有模块,它将消耗超过 100MB(3.x 版本)。但是,如果您想进行图像处理,imgproc 应该足以满足您的需求。您可以单独编译 imgproc(大约 4-5MB),通过将其切换为 ON 并将其他模块转换为 OFF 使用以下命令:

// Clone opencv git repo
$ git clone https://github.com/opencv/opencv.git
$ cd opencv

// Checkout the version that you need, example 3.4.3, ...
$ git checkout 3.4.3

// Create a build directory
$ mkdir build
$ cd build 

// Run cmake command
$ cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a \
-DANDROID_NATIVE_API_LEVEL=23 \
-D WITH_CUDA=OFF \
-D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=OFF \
-D BUILD_opencv_video=OFF \
-D BUILD_opencv_videoio=OFF \
-D BUILD_opencv_features2d=OFF \
-D BUILD_opencv_flann=OFF \
-D BUILD_opencv_highgui=OFF \
-D BUILD_opencv_ml=OFF \
-D BUILD_opencv_photo=OFF \
-D BUILD_opencv_python=OFF \
-D BUILD_opencv_shape=OFF \
-D BUILD_opencv_stitching=OFF \
-D BUILD_opencv_superres=OFF \
-D BUILD_opencv_ts=OFF \
-D BUILD_opencv_videostab=OFF \
-D BUILD_opencv_imgproc=ON \
..

// Build the repo
$ make

// After successful compilation, install the libraies
$ sudo make install

注意:要编译 opencv 构建,您需要安装 android ndk, cmake, etc 等构建工具。更多信息请参考opencv Android搭建流程。

设置较多,请根据需要选择。你也可以用另一个选项编译here

【讨论】:

  • 对不起,我对此有点陌生。你能详细说明我如何以及在哪里运行这个命令吗?另外,命令末尾的“..”还是只是暗示列表继续?
  • ".." 建议我的 CMakeList 文件在 ./opencv/ 而我们在目录 ./opencv/build/ 请参考我上面提供的link
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2011-05-28
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
相关资源
最近更新 更多