關於在Eclipse上使用opencv案例的相關問題總結

到目前爲止,2016年6月,opencv for android 官方最新版本是3.1,上面給出了很多案例源碼,包括非常有名的人臉檢測,精度不錯。

官方的案例都是在Eclipse上寫的,所以個人處於便於學習的目的也就使用了Eclipse,但是我在按照網上先導入sdk,配置好opencv java庫,再把案例導入時出現一大堆錯誤,後來查證全是庫的問題

下面仔細講解案例:

第一類,沒有使用JNI

,即僅僅使用opencv的java接口調用opencv的,導入時,比如官方第一個案例opencv sample -15 puzzled ,常常會有以下報錯:
報錯1

這是因爲你的java庫沒有導入到該項目中,選中項目,右鍵打開properties或者快捷鍵Alt+Enter,你會發現如下錯誤提示:
這裏寫圖片描述


這時只要將錯誤的library刪掉,添加剛剛新導入的library就可以發現項目沒有錯誤了


這裏寫圖片描述


如果到這裏,大家覺得萬事大吉了,那就是too young too simple,
接下來纔是精華,不信,你可以把項目生成apk,放到手機中,再安裝相應的opencv manager,會發現它一直提示你opencv manager安裝不正確,然後你會換各種版本的opencv manager,直到你換個遍都沒找到,這時你應該思考是不是代碼的問題,這就對嘍!!


很簡單,因爲你沒有添加opencv庫,有人又想問了,我之前不是加了?,但是我要說這是兩個庫,在…\OpenCV-3.0.0-android-sdk\OpenCV-android-sdk\sdk\native下面有個libs文件夾,下面是你程序運行需要先添加到apk中的庫,把libs文件夾整體拷貝到你項目的根目錄下,即和src,bin,res等文件夾放到一起這時再運行就可以了。官方可能都沒注意到這個錯誤,我使用他們打包好的apk都提示opencv manager沒有正確安裝!!!!


第二類,使用了jni(java native interface)

這類和前面相同的部分就不寫了,還是舉個例子,比如導入tutorial 2-mixed processing時,

  1. 不僅有前面的錯誤
  2. 還會提示沒有找到ndk-build命令
  3. 如果你打開jni文件夾下面的jni_part.cpp文件還會發現vector頭文件錯誤

第一個前面有,這裏就不多說了,
第二個錯誤,還是找到properties,
這裏寫圖片描述


在builder command這有一段${NDKROOT}/ndk-build.cmd
注意這個環境變量NDKROOT,我之前在網上發現很多人在配置NDK時,寫的是NDK_ROOT環境變量,這在Eclipse的默認環境變量不同,就多了一個”_“,導致錯誤,在這裏,我建議大家修改計算機環境變量爲NDKROOT,不要改Eclipse的,因爲Eclipse不止這一處引用NDK使用NDKROOT環境變量名


第三個錯誤,那個錯誤是因爲沒有配置好NDK庫,這時選擇C++ general–Paths and symbols中的include選項,你會發現如下的配置:


這裏寫圖片描述


GNU c++中引用了NDK的4.6版本,4.6版本,4.6版本,重要的事說三遍,這時我打開我的ndk相應的文件夾(備註,我使用的ndk是r10e)
這裏寫圖片描述


這裏根本沒有4.6,所以我果斷改成4.8,程序運行成功了,大功告成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章