android - 在 Eclipse 中使用 JNI 构建 OpenCV 应用程序

标签 android c++ opencv android-ndk

在 Eclipse 中使用 OpenCV 和 JNI 部分构建 android 应用程序时遇到问题。

问题是 ndk-build 为项目正常运行,但 Eclipse 显示错误(通常与代码无关)。

例如,我正在构建 OpenCV4Android 示例之一:

boris@boris-ubuntu:~/src/OpenCV-2.4.3-android-sdk/samples/tutorial-3-native$ ndk-build 
Install        : libnative_camera_r2.2.0.so => libs/armeabi-v7a/libnative_camera_r2.2.0.so
Install        : libnative_camera_r2.3.3.so => libs/armeabi-v7a/libnative_camera_r2.3.3.so
Install        : libnative_camera_r3.0.1.so => libs/armeabi-v7a/libnative_camera_r3.0.1.so
Install        : libnative_camera_r4.0.0.so => libs/armeabi-v7a/libnative_camera_r4.0.0.so
Install        : libnative_camera_r4.0.3.so => libs/armeabi-v7a/libnative_camera_r4.0.3.so
Install        : libnative_camera_r4.1.1.so => libs/armeabi-v7a/libnative_camera_r4.1.1.so
Install        : libnative_sample.so => libs/armeabi-v7a/libnative_sample.so
Install        : libopencv_java.so => libs/armeabi-v7a/libopencv_java.so

运行正常,但Eclipse显示错误:

'size_t' is ambiguous '
Candidates are:
Field 'pt' could not be resolved
Field 'pt' could not be resolved
Field 'x' could not be resolved
Field 'y' could not be resolved
Invalid arguments '
Candidates are:
void detect(const cv::Mat &, ? &, const cv::Mat &)
void detect(const ? &, ? &, const ? &)
The type 'cv::FastFeatureDetector' must implement the inherited pure virtual method 'cv::FeatureDetector::detectImpl'

还有其他项目中的类似错误。而且,Eclipse intellisense(或者它是如何被正确调用的:)在 .cpp 文件上不起作用。

我尝试清理项目,删除 obj 和 lib 文件夹,但没有效果。

我的系统是ubuntu 12.04,OpenCV版本是2.4.3。

感谢您的帮助!

最佳答案

在 ubuntu 12.04 上遇到了同样的问题,OpenCV 版本是 2.4.3。完全在同一个例子中,我正在使用 eclipse-android 包。

这是我做的:

使用 google repo 更新 NDK 插件,它已经安装但可以更新。

然后我将 size_t 更改为 int 并添加了一个临时变量,而不是像示例那样直接进行。这是代码:

Mat* pMatGr=(Mat*)addrGray;
Mat* pMatRgb=(Mat*)addrRgba;
vector<KeyPoint> v;
FastFeatureDetector detector(50);
detector.detect(*pMatGr, v);
for( int i = 0; i < v.size(); i++ )
{
     KeyPoint tK = v[i];
    circle(*pMatRgb, Point(tK.pt.x, tK.pt.y ), 10, Scalar(255,0,0,255));
}

这确实是一个奇怪的错误,我的猜测是它与 eclipse 调试机制无法正常工作有关。

关于android - 在 Eclipse 中使用 JNI 构建 OpenCV 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483144/

相关文章:

java - 我做了一个 "public void"函数,我现在如何在另一个 Activity 中调用它?

c++ - 如何使用 placement new 重新初始化字段?

c++ - openCV 2.4.3 iOS 框架编译器无法识别某些 C++ header

c++ - 使用 OSVR 将 Opencv Mat 转换为 opengl

android - 为什么在 ListView 中使用 Inflater

android - Android 的 TTS XML 中音素属性的正确语法是什么?

android - CLI Cordova/PhoneGap 项目显示两个 www 目录

c++ - Boost asio 异步读写

c++ - 将 set_intersection 与动态分配一起使用?

opencv - 图像分割/背景减除