OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
生活随笔
收集整理的這篇文章主要介紹了
OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
10 回復(fù) / 9501 瀏覽
本頁底部本帖地址
4king2 年前 - 2014-12-22 18:05 /0 好久沒來科創(chuàng)了,現(xiàn)在荒涼好多啊- -。 發(fā)一篇教程提高下訪問~
原文在我博客
OpenCV的配置一直是個最麻煩的問題,2.4.6以后windows環(huán)境下 vs配置我就出錯好幾十次,來來回回弄了好多遍
之前在實驗室弄,為了配合其他人才用的vs2010,現(xiàn)在蹲宿舍干了,改用更簡潔的Qt了,qt配置OPENCV方便很多,幾句話就搞定了。
人機交互的作業(yè)是寫一個以圖搜圖的demo,之前雖然在實驗室干過類似的東西,但是現(xiàn)在又得用安卓配置OpenCV了,又是麻煩了我一整天。前幾天終于成了,記錄一下。
配置環(huán)境的過程參考了http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool
demo的編寫參考了 http://blog.csdn.net/yanzi1225627/article/details/16917961
由于其resume后圖片會消失,我做了點改動
1.準(zhǔn)備工作
首先安裝好Android Studio,要自帶所有開發(fā)套件的,感覺AS比Intellij+ ADT ,eclipse系列都要好,雖然也想過Qt開發(fā)安卓,但是太小眾了,不好跟人交流。
然后,保證所有環(huán)境變量配置正確,比如 JDK ADT JRE等等等等。
下載 OpenCV Android SDK ,我下的2.4.9,鑒于目前3。0無安卓sdk,2.4.10我也不敢用了,并將下載的OpenCV-2.4.9-android-sdk中的sdk文件夾中的java文件夾 重命名為 opencv
2.創(chuàng)建你的安卓項目(使用gradle,非gradle的教程網(wǎng)上資料很多)在你的工程根目錄下new一個文件夾,名字任意比如libraries ,將剛才的opencv文件夾整個復(fù)制到新建的libraries里面。
3. 在android studio中,在opencv的根目錄處新建一個 build.gradle文件,復(fù)制以下代碼
apply plugin: 'android-library'??buildscript {??repositories {??mavenCentral()??}??dependencies {??classpath 'com.android.tools.build:gradle:1.0.0'??}?? }??android {??compileSdkVersion 21??buildToolsVersion "21.1.2"??defaultConfig {??minSdkVersion 13??targetSdkVersion 21??versionCode 2490??versionName "2.4.9"??}??sourceSets {??main {??manifest.srcFile 'AndroidManifest.xml'??java.srcDirs = ['src']??resources.srcDirs = ['src']??res.srcDirs = ['res']??aidl.srcDirs = ['src']??}??}?? }
注意其中的versionName 改為你自己下載的OpenCV的版本號,compileSdkVersion和minSdkVersion和targetSdkVersion要和你..\工程名\app\目錄下的build.gradle中的設(shè)置一樣
????dependencies {??
????????classpath 'com.android.tools.build:gradle:1.0.0'中的gradle版本要和你工程根目錄下的build.gradle(不是app下的)中的版本一樣,
關(guān)于gradle文件的解釋如下
http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html
4.在工程根目錄的 settings.gradle 中添加以下代碼,改動之后會提示你需要sync,點sync now
include ':libraries:opencv'??
5.在你需要用到opencv的model的/src/main文件夾下新建一個jniLibs文件夾。將剛才下載的OpenCV-2.4.9-android-sdk/sdk/native/libs中的文件拷貝進(jìn)來。 就是各種.so .a文件,相當(dāng)于win下的dll文件,程序靠引用這些動態(tài)鏈接庫工作。另外一點就是,libs下的文件夾不一定要全部復(fù)制,根據(jù)你運行的平臺復(fù)制對應(yīng)的文件夾即可,對應(yīng)關(guān)系如圖,也跟之后的OpenCV Manager有關(guān) (版本號自行對應(yīng))
6.在剛才..工程名\app\ 目錄下的build.gradle 中的dependency下添加以下代碼
compile project(':libraries:opencv')????
該sync now的都sync 就可以開始編寫你的程序了
7.灰度化demo
首先看下opencv官網(wǎng)的流程圖http://docs.opencv.org/platforms/android/service/doc/UseCases.html
從2.4之后,為了和Android的系統(tǒng)架構(gòu)保持同步,準(zhǔn)確說是吸收Android框架層的優(yōu)點,引入了OpenCV Manager的概念,其本質(zhì)就是一個Service,用來管理OpenCV動態(tài)鏈接庫(即你之前拷貝的那個jniLibs里的東西)。
APP在運行時會首先檢查OpenCV Manager存在不,如果不存在則會提示安裝。如果存在,就會連接這個服務(wù),進(jìn)一步初始化加載OpenCV庫。??所以第一步就是先在你的目標(biāo)手機上安裝 OpenCV Manager ,apk在 ..\OpenCV-2.4.9-android-sdk\apk 下版本對應(yīng)之前的圖。
具體的代碼跟http://blog.csdn.net/yanzi1225627/article/details/16917961 沒什么不同,這里只提兩點。
public class MyActivity extends Activity implements HelperCallbackInterface { private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {public void onManagerConnected(int status) {switch (status) {case LoaderCallbackInterface.SUCCESS:{Log.i(TAG, "OpenCV loaded successfully");// Create and set ViewmView = new puzzle15View(mAppContext);setContentView(mView);} break;default:{super.onManagerConnected(status);} break;}} };/** Call on every application resume **/ protected void onResume() {Log.i(TAG, "Called onResume");super.onResume();Log.i(TAG, "Trying to load OpenCV library");if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mOpenCVCallBack)){Log.e(TAG, "Cannot connect to OpenCV Manager");} }
以上截取官方文檔http://docs.opencv.org/platforms/android/service/doc/BaseLoaderCallback.html
任何opencv項目都需要這兩個步驟,在initAsync 加載OpenCV Library 所有其他的操作必須在這一步成功之后才能執(zhí)行。
我最后的程序被ADT自帶的虛擬機坑了好久,再次告誡各位不要用AVD,只要不用AVD應(yīng)該都會成功~
附demo代碼:
package com.example.ras.myapplication;import org.opencv.android.BaseLoaderCallback; import org.opencv.android.OpenCVLoader; import org.opencv.android.Utils; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc;import android.support.v7.app.ActionBarActivity; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.Button; import android.widget.TextView;public class MainActivity extends ActionBarActivity {Button btnProcess;Bitmap srcBitmap;Bitmap grayBitmap;Bitmap MaskBitmap;ImageView imgLena;TextView OpCVversion;private static final String TAG = "MainActivity";private static boolean flag = true;private static boolean isFirst = true;??????????????????????// Greyprivate BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {public void onManagerConnected(int status) {// TODO Auto-generated method stubswitch (status) {case BaseLoaderCallback.SUCCESS:Log.i(TAG, "Load success");break;default:super.onManagerConnected(status);Log.i(TAG, "Load fail");break;}}};protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initUI();btnProcess.setOnClickListener(new ProcessClickListener());}public void initUI(){btnProcess = (Button)findViewById(R.id.button);imgLena = (ImageView)findViewById(R.id.imageView);OpCVversion = (TextView)findViewById(R.id.textView3);OpCVversion.setText("Ver: " + OpenCVLoader.OPENCV_VERSION_2_4_9);Log.i(TAG, "initUI sucess...");}public void procSrc2Gray(){Mat rgbMat = new Mat();Mat grayMat = new Mat();srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lena);grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), 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...");}private class ProcessClickListener implements OnClickListener{public void onClick(View v) {// TODO Auto-generated method stubif(isFirst){procSrc2Gray();isFirst = false;}if(flag){imgLena.setImageBitmap(grayBitmap);btnProcess.setText("Origin");flag = false;}else{imgLena.setImageBitmap(srcBitmap);btnProcess.setText("Grey");flag = true;}}}public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}public boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}protected void onResume() {// TODO Auto-generated method stubsuper.onResume();//load OpenCV engine and init OpenCV libraryisFirst = true;OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);Log.i(TAG, "onResume sucess load OpenCV...");} }
12112 年前 - 2014-12-22 18:33 /1 請編輯帖子把圖片上傳一下,感謝哦~~
4king2 年前 - 2014-12-22 18:37 /2 引用 1211:
請編輯帖子把圖片上傳一下,感謝哦~~ 哦,沒注意防盜鏈- -
darkorochi2 年前 - 2014-12-22 19:57 /3 都2.4.9了啊。。。。。
4king2 年前 - 2014-12-22 20:07 /4 引用 darkorochi:
都2.4.9了啊。。。。。 最新的3.0.0beta
11767641772 年前 - 2014-12-22 22:09 /5 這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何??
金星凌日2 年前 - 2014-12-22 22:20 /6 引用 1176764177:
這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何?? Android應(yīng)用一般用Java開發(fā),不過C++也可以用。
4king2 年前 - 2014-12-22 23:42 /7 引用 1176764177:
這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何?? IDE可以Android Studio畢竟是谷歌官方的,也可以Intellij + ADT 也可以eclipse + ADT
也可以NDT + 別的東西
張靜茹2 年前 - 2014-12-23 14:25 /8 引用 4king:
IDE可以Android Studio畢竟是谷歌官方的,也可以Intellij + ADT 也可以eclipse + ADT
也可以NDT + 別的東西 visual stodio好像也能開發(fā)安卓了,樓主可以試試呀
11767641772 年前 - 2014-12-23 16:43 /9 引用 張靜茹:
visual stodio好像也能開發(fā)安卓了,樓主可以試試呀 好像是英文的不知道安裝在中文的vs13下會咋樣
4king2 年前 - 2014-12-25 17:04 /10 引用 張靜茹:
visual stodio好像也能開發(fā)安卓了,樓主可以試試呀 這不是科創(chuàng)女神嗎,我是微軟黑, VS不考慮
4king2 年前 - 2014-12-22 18:05 /0 好久沒來科創(chuàng)了,現(xiàn)在荒涼好多啊- -。 發(fā)一篇教程提高下訪問~
原文在我博客
OpenCV的配置一直是個最麻煩的問題,2.4.6以后windows環(huán)境下 vs配置我就出錯好幾十次,來來回回弄了好多遍
之前在實驗室弄,為了配合其他人才用的vs2010,現(xiàn)在蹲宿舍干了,改用更簡潔的Qt了,qt配置OPENCV方便很多,幾句話就搞定了。
人機交互的作業(yè)是寫一個以圖搜圖的demo,之前雖然在實驗室干過類似的東西,但是現(xiàn)在又得用安卓配置OpenCV了,又是麻煩了我一整天。前幾天終于成了,記錄一下。
配置環(huán)境的過程參考了http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool
demo的編寫參考了 http://blog.csdn.net/yanzi1225627/article/details/16917961
由于其resume后圖片會消失,我做了點改動
1.準(zhǔn)備工作
首先安裝好Android Studio,要自帶所有開發(fā)套件的,感覺AS比Intellij+ ADT ,eclipse系列都要好,雖然也想過Qt開發(fā)安卓,但是太小眾了,不好跟人交流。
然后,保證所有環(huán)境變量配置正確,比如 JDK ADT JRE等等等等。
下載 OpenCV Android SDK ,我下的2.4.9,鑒于目前3。0無安卓sdk,2.4.10我也不敢用了,并將下載的OpenCV-2.4.9-android-sdk中的sdk文件夾中的java文件夾 重命名為 opencv
2.創(chuàng)建你的安卓項目(使用gradle,非gradle的教程網(wǎng)上資料很多)在你的工程根目錄下new一個文件夾,名字任意比如libraries ,將剛才的opencv文件夾整個復(fù)制到新建的libraries里面。
3. 在android studio中,在opencv的根目錄處新建一個 build.gradle文件,復(fù)制以下代碼
apply plugin: 'android-library'??buildscript {??repositories {??mavenCentral()??}??dependencies {??classpath 'com.android.tools.build:gradle:1.0.0'??}?? }??android {??compileSdkVersion 21??buildToolsVersion "21.1.2"??defaultConfig {??minSdkVersion 13??targetSdkVersion 21??versionCode 2490??versionName "2.4.9"??}??sourceSets {??main {??manifest.srcFile 'AndroidManifest.xml'??java.srcDirs = ['src']??resources.srcDirs = ['src']??res.srcDirs = ['res']??aidl.srcDirs = ['src']??}??}?? }
注意其中的versionName 改為你自己下載的OpenCV的版本號,compileSdkVersion和minSdkVersion和targetSdkVersion要和你..\工程名\app\目錄下的build.gradle中的設(shè)置一樣
????dependencies {??
????????classpath 'com.android.tools.build:gradle:1.0.0'中的gradle版本要和你工程根目錄下的build.gradle(不是app下的)中的版本一樣,
關(guān)于gradle文件的解釋如下
http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html
4.在工程根目錄的 settings.gradle 中添加以下代碼,改動之后會提示你需要sync,點sync now
include ':libraries:opencv'??
5.在你需要用到opencv的model的/src/main文件夾下新建一個jniLibs文件夾。將剛才下載的OpenCV-2.4.9-android-sdk/sdk/native/libs中的文件拷貝進(jìn)來。 就是各種.so .a文件,相當(dāng)于win下的dll文件,程序靠引用這些動態(tài)鏈接庫工作。另外一點就是,libs下的文件夾不一定要全部復(fù)制,根據(jù)你運行的平臺復(fù)制對應(yīng)的文件夾即可,對應(yīng)關(guān)系如圖,也跟之后的OpenCV Manager有關(guān) (版本號自行對應(yīng))
6.在剛才..工程名\app\ 目錄下的build.gradle 中的dependency下添加以下代碼
compile project(':libraries:opencv')????
該sync now的都sync 就可以開始編寫你的程序了
7.灰度化demo
首先看下opencv官網(wǎng)的流程圖http://docs.opencv.org/platforms/android/service/doc/UseCases.html
從2.4之后,為了和Android的系統(tǒng)架構(gòu)保持同步,準(zhǔn)確說是吸收Android框架層的優(yōu)點,引入了OpenCV Manager的概念,其本質(zhì)就是一個Service,用來管理OpenCV動態(tài)鏈接庫(即你之前拷貝的那個jniLibs里的東西)。
APP在運行時會首先檢查OpenCV Manager存在不,如果不存在則會提示安裝。如果存在,就會連接這個服務(wù),進(jìn)一步初始化加載OpenCV庫。??所以第一步就是先在你的目標(biāo)手機上安裝 OpenCV Manager ,apk在 ..\OpenCV-2.4.9-android-sdk\apk 下版本對應(yīng)之前的圖。
具體的代碼跟http://blog.csdn.net/yanzi1225627/article/details/16917961 沒什么不同,這里只提兩點。
public class MyActivity extends Activity implements HelperCallbackInterface { private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {public void onManagerConnected(int status) {switch (status) {case LoaderCallbackInterface.SUCCESS:{Log.i(TAG, "OpenCV loaded successfully");// Create and set ViewmView = new puzzle15View(mAppContext);setContentView(mView);} break;default:{super.onManagerConnected(status);} break;}} };/** Call on every application resume **/ protected void onResume() {Log.i(TAG, "Called onResume");super.onResume();Log.i(TAG, "Trying to load OpenCV library");if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mOpenCVCallBack)){Log.e(TAG, "Cannot connect to OpenCV Manager");} }
以上截取官方文檔http://docs.opencv.org/platforms/android/service/doc/BaseLoaderCallback.html
任何opencv項目都需要這兩個步驟,在initAsync 加載OpenCV Library 所有其他的操作必須在這一步成功之后才能執(zhí)行。
我最后的程序被ADT自帶的虛擬機坑了好久,再次告誡各位不要用AVD,只要不用AVD應(yīng)該都會成功~
附demo代碼:
package com.example.ras.myapplication;import org.opencv.android.BaseLoaderCallback; import org.opencv.android.OpenCVLoader; import org.opencv.android.Utils; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc;import android.support.v7.app.ActionBarActivity; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.Button; import android.widget.TextView;public class MainActivity extends ActionBarActivity {Button btnProcess;Bitmap srcBitmap;Bitmap grayBitmap;Bitmap MaskBitmap;ImageView imgLena;TextView OpCVversion;private static final String TAG = "MainActivity";private static boolean flag = true;private static boolean isFirst = true;??????????????????????// Greyprivate BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {public void onManagerConnected(int status) {// TODO Auto-generated method stubswitch (status) {case BaseLoaderCallback.SUCCESS:Log.i(TAG, "Load success");break;default:super.onManagerConnected(status);Log.i(TAG, "Load fail");break;}}};protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initUI();btnProcess.setOnClickListener(new ProcessClickListener());}public void initUI(){btnProcess = (Button)findViewById(R.id.button);imgLena = (ImageView)findViewById(R.id.imageView);OpCVversion = (TextView)findViewById(R.id.textView3);OpCVversion.setText("Ver: " + OpenCVLoader.OPENCV_VERSION_2_4_9);Log.i(TAG, "initUI sucess...");}public void procSrc2Gray(){Mat rgbMat = new Mat();Mat grayMat = new Mat();srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lena);grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), 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...");}private class ProcessClickListener implements OnClickListener{public void onClick(View v) {// TODO Auto-generated method stubif(isFirst){procSrc2Gray();isFirst = false;}if(flag){imgLena.setImageBitmap(grayBitmap);btnProcess.setText("Origin");flag = false;}else{imgLena.setImageBitmap(srcBitmap);btnProcess.setText("Grey");flag = true;}}}public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}public boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}protected void onResume() {// TODO Auto-generated method stubsuper.onResume();//load OpenCV engine and init OpenCV libraryisFirst = true;OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);Log.i(TAG, "onResume sucess load OpenCV...");} }
[修改于 2 年前 - 2014-12-22 20:17:17]
12112 年前 - 2014-12-22 18:33 /1 請編輯帖子把圖片上傳一下,感謝哦~~
4king2 年前 - 2014-12-22 18:37 /2 引用 1211:
請編輯帖子把圖片上傳一下,感謝哦~~ 哦,沒注意防盜鏈- -
darkorochi2 年前 - 2014-12-22 19:57 /3 都2.4.9了啊。。。。。
4king2 年前 - 2014-12-22 20:07 /4 引用 darkorochi:
都2.4.9了啊。。。。。 最新的3.0.0beta
11767641772 年前 - 2014-12-22 22:09 /5 這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何??
金星凌日2 年前 - 2014-12-22 22:20 /6 引用 1176764177:
這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何?? Android應(yīng)用一般用Java開發(fā),不過C++也可以用。
4king2 年前 - 2014-12-22 23:42 /7 引用 1176764177:
這就是傳說中的安卓開發(fā)環(huán)境搭建?
我查的方法得在谷歌下一堆東西必須翻墻。
咋辦。。
ide用啥好用捏
c艸作為編程語言如何?? IDE可以Android Studio畢竟是谷歌官方的,也可以Intellij + ADT 也可以eclipse + ADT
也可以NDT + 別的東西
張靜茹2 年前 - 2014-12-23 14:25 /8 引用 4king:
IDE可以Android Studio畢竟是谷歌官方的,也可以Intellij + ADT 也可以eclipse + ADT
也可以NDT + 別的東西 visual stodio好像也能開發(fā)安卓了,樓主可以試試呀
11767641772 年前 - 2014-12-23 16:43 /9 引用 張靜茹:
visual stodio好像也能開發(fā)安卓了,樓主可以試試呀 好像是英文的不知道安裝在中文的vs13下會咋樣
4king2 年前 - 2014-12-25 17:04 /10 引用 張靜茹:
visual stodio好像也能開發(fā)安卓了,樓主可以試試呀 這不是科創(chuàng)女神嗎,我是微軟黑, VS不考慮
總結(jié)
以上是生活随笔為你收集整理的OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Java api 和 jni混合方式
- 下一篇: Android 使用OpenCV的三种方