Android开发——Android Studio中配置及使用OpenCV示例
from: http://www.mobile-open.com/2015/86176.html
本文主要講述了Android Studio中配置及使用OpenCV示例,現在整理出來分享給Android程序員兄弟們,希望給他們的開發工作帶來幫助。
Android Studio配置及使用OpenCV
前言:最近在做項目移植,項目較大,在Eclipse中配置的Jni及OpenCV環境沒任何問題,但是遷移到Studio中就問題一大堆,網上也找了一些資料參考及學習,很感謝前人留下的總結及經驗。關于在AS中使用jni及配置OpenCV也研究了一段時間,怕日后忘記便在此記錄下,另一方面也可以給一些新手提供捷徑,少走些彎路。
1、下載及目錄介紹
進入官網(http://opencv.org/)下載OpenCV4Android并解壓(這里是OpenCV-2.4.9-android-sdk)。下面是目錄的結構圖:
sdk 目錄即是我們開發opencv所需要的類庫;
samples 目錄中存放著若干opencv應用示例(包括人臉檢測等),可為我們進行android下的opencv開發提供參考;
doc 目錄為opencv類庫的使用說明及api文檔等;
apk 目錄則存放著對應于各內核版本的OpenCV應用安裝包,如下圖;
(用來管理手機設備中的opencv類庫,在運行opencv應用之前,必須確保手機中已經安裝了OpenCV_2.4.3.2_Manager_2.4_*.apk,否則opencv應用將會因為無法加載opencv類庫而無法運行)
2、將OpenCV引入Android Studio
這里需要注意一點,你可以直接在Android Studio中選擇 File-->Import Module,找到OpenCV解壓的路徑,選擇sdk/java文件夾作為Module進行導入。但便于維護,此處本人的建議是,找到sdk下java目錄,將其拷貝到你的StudioProject項目目錄下,在進行引入。
3、更新build.gradle信息
導入后會因為Gradle中的配置問題出現錯誤,在Studio中的左上角選擇Project視圖,在引入的OpenCVLibrary文件夾下,打開build.gradle(注意是引入的openCVLibrary249下),修改文件中以下信息:
1)compileSdkVersion
2)buildToolsVersion
3)minSdkVersion
4)targetSdkVersion(將其內容與app文件夾下的build.gradle中信息相一致)
如下圖所示:
然后點擊Gradle進行同步(Sync Gradle)。
4、添加Module Dependency
選擇File --->Project Structure,在app module的Dependencies一欄中,點擊右上角的綠色加號,將openCVLibrary添加進去,點擊確定。
5、復制libs文件夾到項目中
在OpenCV的解壓包中,將sdk-->native-->libs文件夾復制,粘貼在Project視圖下app-->src-->main目錄下,并將其重命名為jniLibs。
到此,OpenCV的環境就配置好了,下面用個示例來測試下。這里參考了一篇博文,在此也感謝博主: http://blog.csdn.net/yanzi1225627/article/details/16917961
6、示例演示
OK!先看看OpenCVActivity中是如何寫的:
public class OpenCVActivity extends Activity{private Button btn;private ImageView img;private Bitmap srcBitmap;private Bitmap grayBitmap;private static boolean flag = true;private static boolean isFirst = true;private static final String TAG = gao_chun;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_opencv);img = (ImageView)findViewById(R.id.img);btn = (Button)findViewById(R.id.btn);btn.setOnClickListener(new ProcessClickListener());}@Overrideprotected void onResume() {super.onResume();//load OpenCV engine and init OpenCV libraryOpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, getApplicationContext(), mLoaderCallback);Log.i(TAG, onResume sucess load OpenCV...);}//OpenCV庫加載并初始化成功后的回調函數private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {@Overridepublic void onManagerConnected(int status) {// TODO Auto-generated method stubswitch (status){case BaseLoaderCallback.SUCCESS:Log.i(TAG, 成功加載);break;default:super.onManagerConnected(status);Log.i(TAG, 加載失敗);break;}}};public void procSrc2Gray(){Mat rgbMat = new Mat();Mat grayMat = new Mat();srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.genie);grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);Utils.bitmapToMat(srcBitmap, rgbMat);//convert original bitmap to Mat, R G B.Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);//rgbMat to gray grayMatUtils.matToBitmap(grayMat, grayBitmap); //convert mat to bitmapLog.i(TAG, procSrc2Gray sucess...);}public class ProcessClickListener implements View.OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(isFirst){procSrc2Gray();isFirst = false;}if(flag){img.setImageBitmap(grayBitmap);btn.setText(查看原圖);flag = false;}else{img.setImageBitmap(srcBitmap);btn.setText(灰度化);flag = true;}}}}再來看看簡單的布局界面 activity_opencv.xml:
運行后的效果圖:
按照步驟來,基本沒多大問題,想了想Demo還是上傳供大家參考吧,不過由于拷出來后發現整個包有220多M過于恐怖,索性就刪掉了一些東西,將app目錄下的build目錄下內容刪除,將src ---> main ---> jniLibs 下的.so庫刪除了,注意:若下載demo運行,需要在OpenCV的解壓包目錄下,將sdk-->native-->libs文件夾下的四個目錄復制到項目的jniLibs目錄下便可。
本文到此結束,需要的朋友可以參考下。
總結
以上是生活随笔為你收集整理的Android开发——Android Studio中配置及使用OpenCV示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 使用OpenCV的三种方
- 下一篇: Android Studio使用Open