如何在android摄像头api上进行图像分析

如何在android摄像头api上进行图像分析,android,opencv,android-camerax,Android,Opencv,Android Camerax,我目前正在制作一个文档扫描仪应用程序,用于绘制在相机预览中检测到的页面。为此,我一直在探索许多CameraAPI,似乎发现CameraX是最简单的,因为它大大减少了开发人员的工作量。我面临的一些问题是: 几乎所有带有ImageAnalysis的CameraX示例都在 科特林。即便如此,他们似乎都只是做了初步的分析 例如计算光度。我想做的是画一张画 预览本身中页面周围的边框。有人能帮帮我吗 请告诉我一些可以让我实现这一目标的资源。例如, 我如何在相机预览上画画?Opencv需要位图 要执行所有图像

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

  • 几乎所有带有ImageAnalysis的CameraX示例都在 科特林。即便如此,他们似乎都只是做了初步的分析 例如计算光度。我想做的是画一张画 预览本身中页面周围的边框。有人能帮帮我吗 请告诉我一些可以让我实现这一目标的资源。例如, 我如何在相机预览上画画?Opencv需要位图 要执行所有图像处理,我应该使用哪个视图(例如: 表面视图、纹理视图、预览视图等…)?我已经尝试了其中的大部分,但它们似乎都会在这里或那里出错
  • 这不是一个直接的问题,但最初我是使用OpenCV来实现这一点的 但我的目标是最终从零开始实现它 使用OpenCV会显著增加APK大小。我有点 熟悉一些算法及其工作原理(例如:Canny 边,哈里斯角,逆透视变换等),但我需要 帮助在android(最好是java)中实际实现它们,因为这是我完全迷失的地方
  • 尽管我对Kotlin完全陌生,但我阅读了关于Kotlin的大部分文档,观看了CameraX google keynote活动,并通过codelabs教程了解了如何设置Kotlin。当我明白这一切时,我看了一下谷歌在github上提供的名为CameraX Basic的官方示例应用程序,我完全不知所措。他们在那里放了太多东西,我甚至很难理解。不管我往哪里看,没有一个像样的例子适合我的需要。另外,在他们的文档中,他们有kotlin和java的实现,但他们只有java的示例应用程序


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

    我认为您的主要问题是更大的
    OpenCV
    大小。如果编译所有模块,它将消耗超过100MB(3.x版本)。但是,如果您想进行图像处理,那么
    imgproc
    应该能够满足您的需要。您可以单独编译
    imgproc
    (大约4-5MB),方法是打开
    ,使用以下命令将其他模块关闭

    // 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等构建工具。有关更多信息,请参阅opencv Android构建过程


    有很多设置,请根据需要选择。您还可以使用另一个选项编译

    我认为您的主要问题是更大的
    OpenCV
    大小。如果编译所有模块,它将消耗超过100MB(3.x版本)。但是,如果您想进行图像处理,那么
    imgproc
    应该能够满足您的需要。您可以单独编译
    imgproc
    (大约4-5MB),方法是打开
    ,使用以下命令将其他模块关闭

    // 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等构建工具。有关更多信息,请参阅opencv Android构建过程


    有很多设置,请根据需要选择。您也可以使用另一个选项编译

    我理解您的沮丧和失落感,但您的问题太广泛,我们无法在这里帮助您。你必须从某个地方开始,然后问一个更具体的问题,不幸的是,我已经用java中的tflite和mlkit完成了,但不是opencv。然后你能帮我在CameraX的预览中添加图形吗。一旦我明白了这一点,我将着手解决下一个问题issue@Felix你能分享在这方面帮助过你的资源或网站吗。此外,这也是我的主要问题,你是如何将图像分析与摄像头API集成的,以及你是如何在摄像头预览中绘制页面边界的?@Ayush Koul看看我的github repo我理解你的沮丧和失落感,但你的问题太广泛,我们无法在这里帮助你。你必须从某个地方开始,然后问一个更具体的问题,不幸的是,我已经用java中的tflite和mlkit完成了,但不是opencv。然后你能帮我在CameraX的预览中添加图形吗。一旦我明白了这一点,我将着手解决下一个问题issue@Felix你能分享在这方面帮助过你的资源或网站吗。此外,这也是我的主要问题,你是如何将图像分析与摄像头API集成的,以及你是如何在摄像头预览中绘制页面边框的?@Ayush Koul看看我的github repo抱歉,我对这一点有点陌生。你能详细说明一下我是如何以及在哪里运行这个命令的吗?此外,命令末尾的“.”或只是建议继续列表?“…”建议我的CMakeList文件位于./opencv/而我们位于./opencv/build/目录中,请参考我提供给上面的内容。对不起,我对此有点陌生。你能详细说明一下我是如何以及在哪里运行这个命令的吗?此外,命令末尾的“.”或只是建议继续列表?“…”建议我的CMakeList文件位于./opencv/而我们位于./opencv/build/目录中,请参考我提供给上面的内容