我看到了在安卓设备中使用OpenCV的两种方法:
我的问题是:哪一个更好、更快、更易于配置/编码?或者,如果我的问题是错误的,对每种方式的利弊是什么?我读过OpenCV文档和几篇文章,但找不到问题的答案。
发布于 2020-03-17 03:45:31
我想它必须对应用程序的实现做更多的工作。它是java还是c++ (本机)应用程序?图像处理是应用程序的一个重要负载吗?您需要计算速度还是实现速度?无论如何,我已经通过JNI和NDK在java中使用了OpenCV (C++实现)。我的应用程序的核心是图像处理和处理速度非常符合我的兴趣(几乎实时)。所有东西都是用C++编写的,因为我有我的成像系统的桌面和移动实现。
在移动应用程序(对于android)中,我的成像系统嵌入到一个java应用程序中。从这里,我看到处理分为两部分:图像采集(通过设备摄像机)和图像处理(通过OpenCV)。图像采集都是用java制作的。这项工作并不简单,因为我发现的主要问题是从摄像机(本机为YUV)获取RGB帧,将它们传递给OpenCV,接收来自OpenCV的结果,并将它们呈现到应用程序的表面视图中。
摄像头和OpenCV的接口确实是一个令人头痛的问题,主要取决于设备功能和SDK版本。在获取图像后,处理相对来说是无痛的。我所有的系统以前都是在我的电脑上调试的,我完全知道该期待什么。所有的OpenCV函数都表现得像他们应该的那样,所以我对这个部分几乎没有任何问题。
我也花了很多时间在C++上工作,所以这是决定选择哪种实现的一个因素。现在,应用程序基本上已经安装好了。我可以添加新的功能,并测试他们在我的个人电脑和更新移动端口相当快。
发布于 2020-03-26 18:56:30
Android是在OpenCV中使用OpenCV的标准方法。它基本上是C++ API之上的一个Java层,每个OpenCV函数都通过JNI (Java本机接口)调用它的C++等效层。
进行JNI调用会导致较小的开销,增加使用Java时OpenCV函数的执行时间。如果您的图像处理管道对OpenCV函数进行了大量调用(例如N次调用),那么JNI调用开销将影响您的管道的N次,这会减慢您的总计算时间。
另一种方法是在C++中实现整个图像处理管道,并从Java调用C++代码,从而将开销减少到一个JNI调用。
OpenCV C++ pros :
OpenCV Java的优点:
发布于 2020-03-17 02:50:50
请查看一下打开的cv android版本。
https://stackoverflow.com/questions/60715398
复制相似问题