在 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/