在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。
感谢您的帮助!
答案 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。刚刚删除了示例项目,然后再次导入它。现在工作正常。