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

时间:2012-11-20 22:14:54

标签: 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。

感谢您的帮助!

2 个答案:

答案 0 :(得分: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调试机制无法正常工作有关。

答案 1 :(得分:1)

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

我在“OpenCV教程2 - 混合处理”

上遇到了同样的错误

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