2012-11-20 129 views
1

在Eclipse中使用OpenCV和JNI部分構建android應用程序時遇到了問題。在Eclipse中使用JNI構建OpenCV應用程序

問題比NDK,構建正常運行的項目,但是Eclipse顯示錯誤(通常是無關的代碼)。

例如,我正在創建的OpenCV4Android樣本之一:

[email protected]:~/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。

感謝您的幫助!

+1

你有沒有安裝NDK插件?:http://tools.android.com/recent/usingthendkplugin –

+0

是的,當然。 (放大評論:) –

回答

2

在你的Ubuntu 12.04上有同樣的問題,OpenCV版本是2.4.3。完全在同一個例子中,我使用eclipse-android包。

這裏就是我所做的:

更新使用谷歌回購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調試機制不能正常工作。

+0

謝謝,我稍後再嘗試一下,並告訴結果。 –

+0

那麼,我已經更新了NDK並重新安裝了eclipse,並且一切都很好。奇怪的bug :)無論如何感謝您的幫助,我會標記您的答案。 –

+0

卸載NDK並重新安裝它是唯一能讓「類型」cv :: FastFeatureDetector'必須實現繼承...「錯誤消失的唯一方法。但是,只要我打開文件jni/jni_part.cpp,錯誤再次顯示。對於OpenCV教程3和OpenCV教程4都是如此。因此,這裏看起來有點像eclipse這樣的東西。 – user1792609

1

是非常奇怪的錯誤。在Ubuntu 12.04和OpenCV 2.4.5上。

我上「的OpenCV教程2 - 混合處理」相同的錯誤

設法解決它而無需重新安裝Eclipse或NDK。剛剛刪除了示例項目,然後再次導入它。現在工作正常。

相關問題