Android 在Eclipse中使用JNI构建OpenCV应用程序
在Eclipse中使用OpenCV和JNI部分构建android应用程序时,我遇到了一个问题 问题是ndk build无法正常为项目运行,但Eclipse显示错误(通常与代码无关) 例如,我正在构建OpenCV4Android示例之一:Android 在Eclipse中使用JNI构建OpenCV应用程序,android,c++,opencv,android-ndk,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
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'
和其他项目中的类似错误。此外,EclipseIntelliSense(或者它的正确名称:)不在.cpp文件上工作
我试图清理项目,删除obj和lib文件夹,但没有效果
我的系统是ubuntu 12.04,OpenCV版本是2.4.3
谢谢你的帮助 你在ubuntu 12.04上也遇到了同样的问题,OpenCV版本是2.4.3。在同一个示例中,我使用的是EclipseAndroid包 以下是我所做的: 使用google repo更新NDK插件,该插件已经安装,但可以更新 然后我将size_t改为int,并添加了一个temp变量,而不是像示例中那样直接执行。代码如下:
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));
}
Mat*pMatGr=(Mat*)addrGray;
Mat*pMatRgb=(Mat*)addrRgba;
向量v;
快速特征检测器(50);
检测器。检测(*pMatGr,v);
对于(int i=0;i
这真的是一个奇怪的bug,我猜这与eclipse调试机制不能正常工作有关 是一只非常奇怪的虫子。我在Ubuntu 12.04和OpenCV 2.4.5上 我在“OpenCV教程2-混合处理”中遇到了同样的错误
在不重新安装Eclipse或NDK的情况下成功修复了它。只是删除了示例项目,然后再次导入。现在工作正常。您安装了NDK插件吗?:是的,当然。(放大评论:)谢谢,我稍后会尝试一下,并告诉大家结果。我已经更新了NDK并重新安装了eclipse,一切都很好。奇怪的错误:)无论如何,谢谢你的帮助,我会记下你的答案。卸载NDK并重新安装是我消除“类型'cv::FastFeatureDetector'必须实现继承的…”错误的唯一方法。但是,只要打开文件jni/jni_part.cpp,错误就会再次出现。这对于OpenCV教程3和OpenCV教程4都是正确的。所以这里的eclipse看起来确实有些问题。没错,同意用户1792609,eclipse肯定出了问题,因为当我重新制作opencv工作空间时——删除元数据并再次导入opencv项目——这些错误消失了。谢谢各位,