问题标签 [opencv4android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3152 浏览

android - 如何将 OpenCV 原生库和包含文件集成到 Android Studio?

我已经使用 OpenCV for Android 很长时间了。到目前为止,它工作正常。但现在我想提高性能,我想成为原生的。然而,在 Android 中,即使是原生开发本身对我来说也有点复杂。现在我明白了,我可以自己构建简单的应用程序。

我被卡住的一点是如何添加这些库并将文件包含在 OpenCV Android 包的“本机”文件夹中。

注意:我不打算创建原生应用程序,但只使用 OpenCV 作为原生应用程序。其他部分仍然是java

长话短说,我只是不想用 Java 包装器调用本机 OpenCV 方法,而是在本机中执行与 OpenCV 相关的所有操作,然后将结果传递给 Java 部分。

感谢您提前做出的任何努力。

0 投票
1 回答
1142 浏览

android - 在相机预览中从触摸事件中检索准确的 RGB 值

我一直在开发一个 Android 应用程序,它只需要在相机预览上检索和显示触摸事件的坐标和 RGB 值。我是这种编程语言的初学者,我只是想尝试一下,但应用程序在触摸事件期间不断崩溃。这是我在 Android 中尝试的代码:

我收到 NullPointerException 错误:

E/MessageQueue-JNI(14476):java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.graphics.Bitmap.getPixel(int, int)”

我也尝试使用OpenCV4Android,但仍然得到相同的结果:

错误再次是:

E/MessageQueue-JNI(15884):java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)”

这两个应用程序都显示相机预览,但是当我触摸 Nexus 7 的屏幕时,应用程序停止工作。有人可以告诉我我做错了什么并可能纠正我吗?

0 投票
2 回答
1234 浏览

android - Android:中间目录中缺少资源(是 Gradle 的错吗?)

我对 Android Studio 和 OpenCV 都很陌生,所以如果这是一个糟糕的问题,请原谅我。

下载并安装了 OpenCV 通用库以及适用于 Android 的 OpenCV SDK 后,我现在想使用 Android Studio 和 Android NDK 编译示例 OpenCV 项目之一,以便在我的 Android 手机上使用。

我已按照此页面上的说明进行操作,但仍然遇到 gradle 构建错误。错误输出语句如下:

.../AndroidStudioProjects/MyProject/app/build/intermediates/manifests/full/debug/AndroidManifest.xml

错误:(13, 23) 未找到与给定名称匹配的资源(在“图标”处,值为“@drawable/ic_launcher”)。

错误:(15, 24) 未找到与给定名称匹配的资源(在“主题”处,值为“@style/AppTheme”)。

“任务':app:ProcessDebugResources'的执行失败”

以我非常基本的理解,我猜这意味着 gradle 正在读取build/intermediates/manifests/full/debug目录中的 AndroidManifest.xml,而这个清单正在引用不存在的资源。

如果这是我创建的目录和 xml 文件,我会寻找替换丢失的资源或编辑清单。但是由于构建目录中的所有文件和目录都是由 gradle 生成的,所以我不知道该怎么做。

为什么 gradle 会生成一个目录和文件(即 AndroidManifest.xml),而不是另一个(即缺少的资源)?

我对问题根源的最佳猜测是上述链接提供的build.gradle文件中的某些内容与我的特定设置不匹配。我尝试调整build.gradle以使用不同的 SDK 和 buildTools 版本,但这并没有帮助。

我在 Mac OSX 10.10.4 上运行 Android Studio 1.0.1

如果有人能指出我正确的方向,我将不胜感激。

编辑:这是来自app/src/main目录中的主 AndroidManifest.xml 的文本。

根据我在链接中的说明, app/src/main/res中的所有内容都直接从 OpenCV 示例文件中复制。我在app/src/main/res/values下没有找到 styles.xml ,只有 strings.xml。

0 投票
1 回答
2669 浏览

opencv - OpenCV:良好的训练输出但级联分类器很差

对 OpenCV 来说非常新,我尝试训练一个可以从侧面检测狗图像的 haar 分类器。我已将教程用作指南。作者建议可以使用数量惊人的样本图像来训练一个相对有效的分类器。按照他的指示,我收集了 40 个阳性和 600 个阴性,然后使用提供的脚本以 .vec 文件的形式生成更多样本。通过 20 个阶段的训练大约需要一周半的时间,参数如下:

在最后一个阶段,Neg Count Acceptance Ratio 下降到 0.000579——我认为这意味着 0.0579% 的负样本被错误地归类为正样本,即在它们没有的情况下有狗。换言之,99.942% 的样本被正确识别。这些对我来说似乎是相当不错的数字,但是当我将分类器 .xml 文件插入面部检测程序时,结果很糟糕。

这是用于分析全黑图像的分类器图片(设备的摄像头平放在工作台上,以防止任何光线进入):

(想象一个黑色的屏幕,有几个随机放置的绿色矩形边框,有些重叠。可悲的是,我似乎没有必要的声誉来发布真实的东西......)

我对修复分类器的最佳猜测是,我需要使用更大的负样本和正样本池进行重新训练。

我真正想知道的是:为什么分类器的接受率和真实世界的性能如此不同?我是否误解了接受率的含义?如果我对比率的理解是正确的,我应该期望什么样的数字会给我一个有效的分类器?

任何帮助将不胜感激。

0 投票
2 回答
100 浏览

java - openCV for Android - 集成问题

我需要在我的应用程序中集成 OpenCV 2.4。首先,我发现它需要 OpenCV Manager 才能运行基于 OpenCV 的应用程序。但是,经过一番谷歌搜索,我发现了另一种使用静态初始化的方法herehere。我试过但它不起作用:

伪代码:

我试过了,但这不起作用。它显示了安装 openCV Manager 的相同弹出窗口。

我还尝试initAsync()在 onResume 和mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);中删除 但是当我使用它时应用程序崩溃了。

谁能指导我正确的方式?请不要标记为重复;关于 SO 的问题有成百上千个没有答案。

0 投票
1 回答
1487 浏览

java - Android OpenCV - 获取两条模糊线之间的距离

如前所述,我试图从应用边缘检测的图像中获取两条模糊线之间的距离。作为示例,请查看下图以进行说明。

在此处输入图像描述

如您所见,线条形状不正确。理想情况下,我想要的是从上面显示的每条线中获取最远的点,并计算它们之间的距离。这对 OpenCV 可行吗?我知道我可以使用幅度函数来适当地计算距离,但问题在于实际上首先要找到最远的点。

有人会知道我该如何解决这个问题吗?

0 投票
1 回答
510 浏览

android - OpenCV Android CameraBridgeViewBase如何抓取一帧,处理,绘制,不被帧抓取打断

我开始使用适用于 Android 的 OpenCV,并且正在使用 CameraBridgeViewBase 类来抓取帧。然后我调用一个工作线程来处理该帧,但我注意到如果我的处理时间过长,则会抓取另一个帧并中断我的工作线程。如何解决这个问题?可以停止一段时间的抓帧吗?我在网上的任何地方都找不到解决方案!

干杯,凯文

0 投票
1 回答
504 浏览

java - 带有 OpenCV java 包装器的 SVD solvez

我正在使用 OpenCV_2.4.11 java 包装器(在 Android 上)移植一些 C++ 代码。我有以下 C++ 行:

在java中,我有:

如何使用 OpenCV java 包装器翻译最后两行?

0 投票
1 回答
1894 浏览

java - 如何使用 MatOfKeyPoint 绘制矩形进行文本检测 | 爪哇

我正在使用 OpenCV4Android 进行实时文本检测和识别。识别部分完全完成。但是,我不得不问有关文本检测的问题。我正在使用 MSER FeatureDetector 检测文本。

这是实时和调用方法部分:

这是基本的 MSER 实现:

它适用于查找带有边缘掩码的文本。

我想为这样的集群绘制一个矩形:

在此处输入图像描述

或这个:

在此处输入图像描述

你可以假设我有正确的观点。

如您所见,fd.detect() 方法返回一个 MatOfKeyPoint。因此,我尝试了这种绘制矩形的方法:

但是当我尝试使用 Imgproc.arcLength() 方法时,它突然停止了。我为 Imgproc.approxPolyDP() 方法提供了一个随机的 approxDistance 值,例如 0.1,它的工作效率并不高。

那么如何为检测到的文本绘制矩形呢?

0 投票
1 回答
7046 浏览

opencv - OpenCv with Android studio 1.3+ using new gradle - undefined reference

我在使用原生 OpenCv 2.4.11(3.0.0 也可以)和 Android Studio 1.3+ 以及新的 ndk 支持时遇到问题。所有关于 .mk 文件的教程,但我想将它与新的实验性 gradle 一起使用。
在 Android Studio 中使用 Kiran answer OpenCV 我在 Java 中实现了正常工作。我也改变了
gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

build.gradle(application):



构建.gradle(模块):

通过这些更改,我可以在 jni 文件夹下的 c++ 文件中调用我的本机虚拟函数。CLion#include <opencv2/core/core.hpp>也支持其他人......当我声明 cv::Mat mat; 给我这个错误:

C++代码:

更新

- 向 ldLibs 添加了“z”
- 添加了 android.productFlavors 块

现在编译成功,应用程序启动第二次,然后崩溃并显示此消息
事件日志:

调试信息:

日志: