Android Studio中配置及使用OpenCV示例(一)
Android Studio配置及使用OpenCV
前言:最近在做專案移植,專案較大,在Eclipse中配置的Jni及OpenCV環境沒任何問題,但是遷移到Studio中就問題一大堆,網上也找了一些資料參考及學習,很感謝前人留下的總結及經驗。關於在AS中使用jni及配置OpenCV也研究了一段時間,怕日後忘記便在此記錄下,另一方面也可以給一些新手提供捷徑,少走些彎路。
1、下載及目錄介紹
進入官網(http://opencv.org/)下載OpenCV4Android並解壓(這裡是OpenCV-2.4.9-android-sdk)。下面是目錄的結構圖:
sdk 目錄即是我們開發opencv所需要的類庫;
samples
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解壓的路徑,選擇
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。
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";
@Override
protected 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());
}
@Override
protected void onResume() {
super.onResume();
//load OpenCV engine and init OpenCV library
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, getApplicationContext(), mLoaderCallback);
Log.i(TAG, "onResume sucess load OpenCV...");
}
//OpenCV庫載入並初始化成功後的回撥函式
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
// TODO Auto-generated method stub
switch (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 grayMat
Utils.matToBitmap(grayMat, grayBitmap); //convert mat to bitmap
Log.i(TAG, "procSrc2Gray sucess...");
}
public class ProcessClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isFirst){
procSrc2Gray();
isFirst = false;
}
if(flag){
img.setImageBitmap(grayBitmap);
btn.setText("檢視原圖");
flag = false;
}else{
img.setImageBitmap(srcBitmap);
btn.setText("灰度化");
flag = true;
}
}
}
}
再來看看簡單的佈局介面 activity_opencv.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="OpenCV"/>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/genie"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/img"
android:layout_centerHorizontal="true"
android:text="灰度化"/>"
</RelativeLayout>
執行後的效果圖:
按照步驟來,基本沒多大問題,想了想Demo還是上傳供大家參考吧,不過由於拷出來後發現整個包有220多M過於恐怖,索性就刪掉了一些東西,將app目錄下的build目錄下內容刪除,將src ---> main ---> jniLibs 下的.so庫刪除了,注意:若下載demo執行,需要在OpenCV的解壓包目錄下,將sdk-->native-->libs資料夾下的四個目錄複製到專案的jniLibs目錄下便可。
【轉載註明gao_chun的Blog:http://blog.csdn.net/gao_chun/article/details/49359535】
相關推薦
Android Studio中配置及使用OpenCV示例(一)
Android Studio配置及使用OpenCV前言:最近在做專案移植,專案較大,在Eclipse中配置的Jni及OpenCV環境沒任何問題,但是遷移到Studio中就問題一大堆,網上也找了一些資料參考及學習,很感謝前人留下的總結及經驗。關於在AS中使用jni及配置Open
ANDROID專案中嵌入高德地圖(一)配置環境+顯示地圖
最近在做專案中嵌入高德地圖的工作,覺得有必要記錄一下嵌入過程,雖然高德官方給說明文件了,但有寫並不明確需要去查類,查資料,再此把過程記錄一下。 一、顯示地圖 1.配置AndroidManifest.xml檔案 可能需要如下許可權: <!--允許程式開啟網路套接字-
影象處理基礎及OpenCV實現(一)
最近學習數字影象處理基礎及OpenCV實現這本書,寫一點東西記錄所學的內容。。 一、 開啟影象與視訊 開啟影象 用到了OpenCV中的結構體IplImage, 函式IplImage* cvLoadImage( const char* filename, int
dagger2的配置及基本使用(一)
一、配置: 1.1 在Project的gradle指令碼中配置 dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' }
c#中配置檔案的使用(一)
在使用log4net的時候,需要自己來配置相關的檔案,之前雖然研究過如何來使用配置檔案,但是時間一久還是有點生疏,下面自己做的一些小test,也讓自己能夠有比較深的印象,在學習過程中,也在網上看到了一位大神寫的相關的內容,比較詳細,這是大神部落格關於配置檔案的地址
Android Studio中配置AndroidAnnotations,遇到的問題及解決方法
搞安卓開發以來,一直使用的Eclipse,Google出了AndroidStudio(簡稱AS)以後,一直忙於專案沒有時間試試,今天裝了一個適應一下,然後想在裡面用上AndroidAnnotions(簡稱AA)(一個挺不錯的開源框架,用起來特別方便,如果你現
android studio中配置X5 webview時的一個坑
這也 default ips build 找到 沒有 androi lte sed 在接入X5的第二步中,需要配置so文件,這裏說一下遇到的坑 1. 需要把demo下載回來,不然你找不到so文件,找到so文件後放到自己相對應的目錄下邊,自己裏面那個目錄也沒有,所以和文件夾一
Android Studio中配置GitHub
準備: 1、你要註冊了GitHub,確保你有了GitHub賬號。 2、下載GitHub客戶端,安裝客戶端。(下載客戶端安裝客戶端我上篇文章已經講過了這裡就不贅述了)。如果不瞭解請移步至 3、設定GitHub賬號密碼:開啟Android Studio 找到File -
Android studio中在用opencv時不使用opencv manager
週末一時興起打算用opencv開發一個在安卓平板上的跑的影象處理程式,前期寫程式碼都很順利,編譯成功後安裝,一執行就彈出讓安裝opencv manager,安裝後執行,竟然提示OpenCV was not initialised correctly. Appli
修改android studio中的avd sdk路徑(前提是已經下載好了avd sdk-----用eclipse的福音)
很多人都遇到安裝android studio之後需要下載gradle和重新下載avd sdk的問題 首先,設定環境變數,ANDROID_SDK_HOME值為sdk所在目錄,GRADLE_HOME值為gradle所在目錄,在path中新增%ANDROID_SDK_HOME%\
在 Android studio 中 配置Gradle 根據不同引數打包,並在程式碼中使用
筆記 使用案例 app/gradle 配置 我們在 thinker中不難看出 他們也是使用了這個方式 android { defaultConfig {
Android Studio中配置so檔案的方法
最近要在專案中加入百度地圖api的支援。剛開始的時候總是出現 Error inflating class com.baidu.mapapi.map.MapView這個錯誤,對照百度地圖給的demo之後發現是沒有在自己繼承的Application類裡面加入S
經驗總結-完整介紹Android Studio中Git的使用之Android Studio上傳專案至GitHub(三)
現在我們開始吧,說明一下,下面的內容中,都是Git部落格系列的,雖然專案名和和之前不同,但它們都是銜接關係,如果你沒有銜接好,請建立一個專案自行完成銜接。 一、首先再次確定你自己的專案建立了Git
android studio 環境配置及使用時遇到的問題
問題 發現 解決 應該 解決方法 ... 步驟 文件刪除 無法 1 安裝好java等,安裝好android studio後,第一次運行android studio, 顯示找不到sdk。 解決方法: 點擊cancel取消,繼續後面的步驟,一直next就好。 2 第一次構建項目
Android Studio中使用AIDL簡單示例
這兩天在學習aidl跨程序呼叫,研究了一天終於寫出了個helloword。。做下記錄吧。 根據官方提供的指南,開發aidl跨程序呼叫,主要分以下步驟: 1.建立.aidl檔案-該檔案(YourInterface.aidl)定義了客戶端可用的方法和資料的介面。 2.在make
項目中遇到的某些問題及解決辦法(一)
sql () 輸入 包含 查看 定位 管理器 顯示 分布式開發 簡介 該博文記錄了一些平時在工作中遇到的問題及解決辦法,某些問題有解決辦法,某些問題暫時沒有解決辦法,如果有大神知道的,請多多指點。 如果某些問題有更好的解決辦法,也請指教。 正文 1、在一個方
Android中關於JNI 的學習(一)對於JNIEnv的一些認識
else size 初步 jint 使用 包括 pri jnienv 就會 一個簡單的樣例讓我們初步地了解JNI的作用,可是關於JNI中的一些概念還是須要了解清楚,才可以更好的去利用它來實現我們想要做的事情。 那麽C++和Java之間的是怎樣通過JNI來進行互相調用的呢
tomcat中server.xml配置詳解(轉載)(一)
重要 lis 結構 更多 tle 處理請求 服務器端 sta 設置 轉載自:https://www.cnblogs.com/starhu/p/5599773.html tomcat中server.xml配置詳解 Tomcat Server的結構圖如下:(該文件描述了如何
專案中常用的讀取配置檔案的方式(一)
package com.bjpowernode.demo01; import java.util.ResourceBundle; /** ResourceBundle讀取配置檔案 @author Administrator */ public clas
Spring Cloud:配置中心git示例(06)
隨著線上專案變的日益龐大,每個專案都散落著各種配置檔案,如果採用分散式的開發模式,需要的配置檔案隨著服務增加而不斷增多。某一個基礎服務資訊變更,都會引起一系列的更新和重啟,運維苦不堪言也容易出錯。配置中心便是解決此類問題的靈丹妙藥。 市面上開源的配置中心有很多,BAT每家都出過,360的QCon