1

在 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 智能感知(或者它是如何正确调用的 :) 不适用于 .cpp 文件。

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

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

谢谢你的帮助!

4

2 回答 2

2

在 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 调试机制无法正常工作有关。

于 2012-11-22T16:03:07.157 回答
1

是的,非常奇怪的错误。我在 Ubuntu 12.04 和 OpenCV 2.4.5 上。

我在“OpenCV 教程 2 - 混合处理”中遇到了同样的错误

无需重新安装 Eclipse 或 NDK 即可修复它。刚刚删除了示例项目,然后再次导入。现在工作正常。

于 2013-07-03T04:21:44.487 回答