首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV设备中的OpenCV Java还是OpenCV C++ API?

OpenCV设备中的OpenCV Java还是OpenCV C++ API?
EN

Stack Overflow用户
提问于 2020-03-17 02:15:00
回答 3查看 248关注 0票数 1

我看到了在安卓设备中使用OpenCV的两种方法:

  1. 使用
  2. 使用C++ OpenCV API

我的问题是:哪一个更好、更快、更易于配置/编码?或者,如果我的问题是错误的,对每种方式的利弊是什么?我读过OpenCV文档和几篇文章,但找不到问题的答案。

EN

回答 3

Stack Overflow用户

发布于 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++上工作,所以这是决定选择哪种实现的一个因素。现在,应用程序基本上已经安装好了。我可以添加新的功能,并测试他们在我的个人电脑和更新移动端口相当快。

票数 1
EN

Stack Overflow用户

发布于 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 :

  1. 速度
  2. 现有C++代码的可重用性
  3. 所有OpenCV API可用

OpenCV Java的优点:

  1. 更容易部署
  2. 更容易实现
  3. 易于调试
票数 1
EN

Stack Overflow用户

发布于 2020-03-17 02:50:50

请查看一下打开的cv android版本。

SDK.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60715398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档