日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安装目录opencv for android 教程(环境搭建篇)

發(fā)布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装目录opencv for android 教程(环境搭建篇) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這幾周朋友幾篇文章介紹了改安裝目錄的文章. 關聯(lián)文章的地址

? ?

????最近android開發(fā)異常熾熱,隨著手機性能越來越高,圖像處程序也越來越重要,

????由于opencv for android 網(wǎng)上教程大多為英文文檔,中文教程都為零碎篇章,

????很少有完全的opencv for android 教程

????博主最近正在學習opencv for android 其中走了很多彎路

????所以將一些經(jīng)驗寫下 幫助大家少走彎路!

????只合適初學者 請大神教正,或者繞道吧,走好不送!

????注意本文只擔任環(huán)境的搭建 不擔任講授

????按照文章來確保能搭建一個完美的opencv for android 的開發(fā)環(huán)境

? ?

????但是詳細的理解 須要讀者自己實驗和摸索!

????win7/win8 環(huán)境

????我是win8環(huán)境

????java SDK 6 / 7 ? ? ?

?

????我是用的6

????eclipse for java EE IED

????我是32位版

????ADT插件

????CDT插件

????Android SDK

????Android NDK

????我的是r8版

????cygwin

????Sequoyah

????opencv for android

????我用的是2.4.5

????

如果你還沒有JDK的話,可以去這里下載,接下來的工作就是安裝提示一步一步走。設置環(huán)境變量步調如下:

????

  • 我的電腦->屬性->高級->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:
  • JAVA_HOME值為: D:\Program Files\Java\jdk1.6.0_18(你安裝JDK的目錄
  • CLASSPATH值為:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
  • Path:? 在開始追加 %JAVA_HOME%\bin;
  • NOTE:前面四步設置環(huán)境變量對搭建Android開發(fā)環(huán)境不是必須的,可以跳過。
  • ????

    安裝實現(xiàn)當前,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version 查看JDK的版本信息。涌現(xiàn)相似下面的畫面表示安裝成功了:

    ????

    ? ?

    ????1.下載

    ????2.解壓到任意目錄

    ????3.去目錄啟動

    ????4.設置工作路徑

    ????5.安裝實現(xiàn)

    ????

    在Android Developers下載android-sdk_r05-windows.zip,下載實現(xiàn)后解壓到任意路徑。

    ????

    • 運行SDK Setup.exe,點擊Available Packages。如果沒有涌現(xiàn)可安裝的包,請點擊Settings,選中Misc中的"Force https://..."這項,再點擊Available Packages 。
    • 選擇希望安裝的SDK及其文檔或者其它包,點擊Installation Selected、Accept All、Install Accepted,開始下載安裝所選包
    • 在用戶變量中新建PATH值為:Android SDK中的tools絕對路徑(本機為D:\AndroidDevelop\android-sdk-windows\tools)。

    ????

    ????


    ????

    進入cmd命令窗口,檢查SDK是不是安裝成功。?
    運行 android –h 如果有相似以下的輸出,標明安裝成功:

    ????


    ????ADT是專門給eclipse開發(fā)android的插件

    ????

    ????

    • 打開 Eclipse IDE,進入菜單中的 "Help" -> "Install New Software"
    • 點擊Add...按鈕,彈出對話框要求輸入Name和Location:Name自己隨意取,Location輸入http://dl-ssl.google.com/android/eclipse。如下圖所示:

    ????

    ????

    ????然后就是按提示一步一步next。

    ????

    ????

    實現(xiàn)當前:

    ????

    • 選擇Window > Preferences...
    • 在左邊的面板選擇Android,然后在右側點擊Browse...并選中SDK路徑,本機為:?
      D:\AndroidDevelop\android-sdk-windows
    • 點擊Apply、OK。配置實現(xiàn)。

    ????

    創(chuàng)建android AVD模擬器:

    android AVD模擬器是一個android的虛擬機用來在pc機上調試android程序用的! 至于如何創(chuàng)建 這里就不說了 因為我應用真機調試所以沒有用這個
    以上 android 的開發(fā)環(huán)境就搭建終了了 如果有任何問題請自行google,這個資料太多了! 總會有一個合適你

    NDK + Cygwin 環(huán)境搭建:

    參考1: 點擊打開鏈接 參考2: 點擊打開鏈接

    安裝Android NDK:

    1.下載Android NDK 我下載的是 r8版本 地址就不給除了 自己google吧 2.解壓到任意目錄 我解壓的目錄是e:/IDE/ 下 3.實現(xiàn)

    安裝Cygwin:

    Cygwin 是一個將c++代碼編譯成os動態(tài)庫的東西, 而os庫就可以給java調用了 這里可能你有困惑 opencv for android 不是有java的API了么 怎么還要用c++ 嗯 只能說JAVA的API還不是很全面 有些東西還是會用到c++的API才行 所以這個是必須的 還有一些有說NDK r8 不須要Cygwin了 但是我不知道怎么弄 我現(xiàn)在還是應用這個的

    由于NDK開發(fā)大都涉及到C/C++在GCC環(huán)境下編譯、運行,所以在Windows環(huán)境下,須要模擬Linux模擬編譯環(huán)境,下載地址:

    http://www.cygwin.com/

    下載后是個setup.exe文件,應用進程如下:

    第一步:運行setup程序,第一步圖略,直接點擊Next進入下一步。

    第二步:選擇安裝方法,第一次可以采取Direct Connection在線下載安裝,如有現(xiàn)成的離線包,可以選擇離線安裝(Install from Local Directory)。

    ?

    第四步:設置本地包暫存路徑

    暫存目錄默許是放到setup.exe的同級目錄下,下載后名字相似ftp%3a%2f%2fcygwin.mirrors.pair.com%2f這樣格式。


    第五步:設置網(wǎng)絡連接方法


    第六步:選擇下載站點地址

    起初實驗幾個看哪個速度快就用哪個地址(如果感到不快就點取消,再次來過)。



    ?

    第七步:等待加載安裝項載入,選擇安裝項

    我們編譯NDK,在默許設置下,只要選擇Devel(點擊列表中Devel,將前面的Default改成Install,圖中箭頭所示),其它均為默許狀態(tài)。

    ?

    第八步:等待下載實現(xiàn)

    下載實現(xiàn)時光決定于你選擇的安裝包數(shù)量及網(wǎng)絡連接速度,比如按照本文默許的選擇方法,可能須要4-5個小時,下載后壓縮包約750M,下載實現(xiàn)后會自動安裝到上文設置的安裝目錄。



    提示:第一次下載實現(xiàn)后,最好把下載的包目錄做個備份,下次安裝同樣的環(huán)境可以直接應用離線安裝方法(第二步中選擇本地安裝)。

    安裝實現(xiàn)后,先運行Cygwin一次(Cygwin.bat),以便創(chuàng)建一些用戶環(huán)境文件,分離輸入:

    make -v

    和,

    gcc -v

    如果檢測成功,會有make和gcc相關版本信息打印出來,如下圖。


    ????


    ????


    ????

    可以在cygwin中通過vim修改,也可以在windows安裝目錄中修改 home\<你的用戶名>\.bash_profile 文件中最后添加環(huán)境變量

    NDKROOT=/cygdrive/e/Andriod/develop/android-ndk-r8

    export NDKROOT

    其中NDK=/cygdrive/<你的盤符>/<android ndk 目錄> ,"NDK"這個名字隨意起,當前經(jīng)常用不要太長。

    重啟cygwin,輸入:

    cd $NDK

    可進入ndk對應目錄說明設置OK。

    3.用ls命令查看libs/armeabi/下是否生成了so文件,有l(wèi)ibhello-jni.so說明ndk運行正常。
    $ ls libs/armeabi/
    gdb.setup gdbserver libhello-jni.so
    也可以到E:\android\android-ndk-r8\samples\hello-jni\libs\armeabi目錄下看有沒有生成的.so文件。


    2)導入NDK的hello-jni示例到Eclipse中
    1.在Eclipse中新建一個Android工程HelloJni。
    在Create Android Project時勾選“Create project from existing source”,Location中填E:\android\android-ndk-r8\samples\hello-jni





    2.直接以Android Aplication運行com.example.hellojni.HelloJni項目。要先有.so文件才能運行起來。 os放在工程根目錄下


    CDT插件的安裝:

    ????

    CDT是eclipse開發(fā)c++用的插件

    ????

    CDT插件可以在一個工程中同時開發(fā)基于C/C++的Native代碼和基于Java的代碼,加上Sequoyah插件可以一次編譯兩部分代碼。下載地址:http://www.eclipse.org/cdt/downloads.php
    不同eclipse版本要下載對應的包,否則安裝不了。
    Help-->About Eclipse 下可以看到自己用的版本,我的是 Version: Helios Service Release 2 即Helios版本
    http://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/helios/dist/cdt-master-7.0.2.zip
    cdt-master-7.0.2.zip:這個是CDT的離線安裝包。(由于文件比較大推薦應用離線包,7.0.2的54.8M,8.1.1的103MB)
    安裝:Eclipse -> Help -> Install New Software,點擊add。
    Name:CDT_版本。
    Location:點擊Archive,定位到下載的“cdt-master-7.0.2.zip”文件。

    如果Location的下面涌現(xiàn)“Duplicate location”錯誤,請到Window -> preferences -> Install/Update -> Avaliable Software Site中找到remove掉。
    如果涌現(xiàn)缺少eclipse包說明你下載的版本和eclipse版本不匹配,從新下載匹配的從新安裝就可以了。

    ????

    ????


    ????


    ????

    另外須要重啟eclipse后才生效。
    安裝實現(xiàn)重啟后,在Eclispe中新建一個項目,如果涌現(xiàn)了C/C++項目,則標明CDT插件安裝成功了。

    ????

    ????


    ????

    安裝Sequoyah插件:

    ????

    Sequoyah插件用于設置Android工程對Native開發(fā)的支持。
    官方網(wǎng)址:http://www.eclipse.org/sequoyah/downloads/
    打開上面網(wǎng)址就可以看到詳細的安裝說明了
    Location:http://download.eclipse.org/sequoyah/updates/2.0/

    For Helios SR2 Sequoyah version: http://download.eclipse.org/sequoyah/updates/1.0.2/
    注:只是安裝1.0.2的沒有出來“本機開發(fā)”的配置所以沒法用,本人從新安裝了2.0的可以了,這個應該直接安裝最新版2.0的就可以了。
    在安裝界面不要勾選“Group items by category”復選框,選中涌現(xiàn)了列表為空(There are no categorized items)的情況。

    在“window –> preferences ->Android -> 本機開發(fā)”中添加NDK的路徑。

    ????

    ????


    ????

    這個插件安裝后也須要重啟eclipse的
    重啟后右鍵之前建立的“HelloJni”項目,在“Android Tools”選項中包含“Add Native Support…”選項即成功。

    ????


    每日一道理
    正所謂“學海無涯”。我們正像一群群魚兒在茫茫的知識之海中跳躍、 嬉戲,在知識之海中出生、成長、生活。我們離不開這維持生活的“海水”,如果跳出這個“海洋”,到“陸地”上去生活,我們就會被無情的“太陽”曬死。

    opecnv for android 開發(fā)環(huán)境搭建:

    參考1: 點擊打開鏈接 參考2: 點擊打開鏈接

    opencv for android SDK 安裝:

    進入官網(wǎng)(http://opencv.org/)下載OpenCV4Android并解壓,其目錄結構如下:

    其中,sdk目錄即是我們開發(fā)opencv所須要的類庫;samples目錄中存放著多少opencv應用示例(包括人臉檢測等),可為我們進行android下的opencv開發(fā)提供參考;doc目錄為opencv類庫的應用說明及api文檔等;而apk目錄則存放著對應于各內核版本的OpenCV_2.4.3.2_Manager_2.4應用安裝包。此應用用來管理手機設備中的opencv類庫,在運行opencv應用之前,必須確保手機中已安裝了OpenCV_2.4.3.2_Manager_2.4_*.apk,否則opencv應用將會因為無法加載opencv類庫而無法運行。

    2.2 將SDK引入工作空間

    ??????? (1) 選擇一個路徑,新建文件夾做為工作空間(我在E盤根目錄下新建workspace目錄來做為工作空間);

    ??????? (2) 將OpenCV-2.4.3.2-android-sdk中的sdk目錄copy至工作空間,并將其更名為OpenCV-SDK(是否更改名稱無所謂,這是我個人習氣而已);

    ??????? (3) 以新建的目錄為工作空間,打開eclipse;

    ??????? (4) 將OpenCV-SDK引入到工作空間中,如下圖所示:









    應用java API開發(fā)android:

    創(chuàng)建工程

    ??????? (1) 打開eclipse,創(chuàng)建android應用工程GrayProcess;

    ??????? (2) 將測試圖像lena.jpg添加到資源目錄res/drawable-hdpi中;

    ??????? (3) 在Package Explorer中選擇項目GrayProcess,單擊右鍵在彈出菜單中選擇Properties,然后在彈出的Properties窗口中左側選擇Android,然后點擊右下方的Add按鈕,選擇OpenCV Library 2.4.3并點擊OK,操縱實現(xiàn)后,會將OpenCV類庫添加到GrayProcess的Android Dependencies中,如下圖所示:








    工程代碼:
    (1) 字符串資源文件:strings.xml
    <resources><string name="app_name">GrayProcess</string><string name="hello_world">Hello world!</string><string name="menu_settings">Settings</string><string name="title_activity_main">MainActivity</string><string name="str_proc">gray process</string><string name="str_desc">image description</string></resources> (2) 布局文件:main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><Button android:id="@+id/btn_gray_process"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_proc"/><ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="@string/str_proc"/></LinearLayout>
    ? (3) MainActivity.java package com.iron.grayprocess;import org.opencv.android.BaseLoaderCallback; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; import org.opencv.android.Utils; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc;import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Bitmap.Config; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener{private Button btnProc;private ImageView imageView;private Bitmap bmp;//OpenCV類庫加載并初始化成功后的回調函數(shù),在此我們不進行任何操縱private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {@Overridepublic void onManagerConnected(int status) {switch (status) {case LoaderCallbackInterface.SUCCESS:{} break;default:{super.onManagerConnected(status);} break;}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btnProc = (Button) findViewById(R.id.btn_gray_process);imageView = (ImageView) findViewById(R.id.image_view);//將lena圖像加載程序中并進行表現(xiàn)bmp = BitmapFactory.decodeResource(getResources(), R.drawable.lena);imageView.setImageBitmap(bmp);btnProc.setOnClickListener(this);}@Overridepublic void onClick(View v) {Mat rgbMat = new Mat();Mat grayMat = new Mat();//獲得lena黑色圖像所對應的像素數(shù)據(jù)Utils.bitmapToMat(bmp, rgbMat);//將黑色圖像數(shù)據(jù)轉換為灰度圖像數(shù)據(jù)并存儲到grayMat中Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);//創(chuàng)建一個灰度圖像Bitmap grayBmp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Config.RGB_565);//將矩陣grayMat轉換為灰度圖像Utils.matToBitmap(grayMat, grayBmp);imageView.setImageBitmap(grayBmp);}@Overridepublic void onResume(){super.onResume();//通過OpenCV引擎服務加載并初始化OpenCV類庫,所謂OpenCV引擎服務即是//OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安裝包的apk目錄中OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);} }
    3.1.3 運行結果 ? ? ? ?


    應用 c++ API開發(fā)android:

    創(chuàng)建工程???????

    ??????? 步調如工程一,創(chuàng)建新工程GrayProcess2,將lena.jpg添加到資源文件,并按上面所示將opencv類庫添加到工程中。

    編寫下層代碼(java)

    (1)Stings.xml

    <resources><string name="app_name">GrayProcess2</string><string name="hello_world">Hello world!</string><string name="menu_settings">Settings</string><string name="title_activity_main">GrayProcess2</string><string name="str_proc">gray process</string><string name="str_desc">image description</string> </resources> (2)main.xml

    ?

    ?

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><Button android:id="@+id/btn_gray_process"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_proc"/><ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="@string/str_proc"/></LinearLayout>
    (3)MainActivity.java

    ?

    ?

    package com.iron.grayprocess2;import org.opencv.android.BaseLoaderCallback; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Bitmap.Config; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener{private Button btnProc;private ImageView imageView;private Bitmap bmp;//OpenCV類庫加載并初始化成功后的回調函數(shù),在此我們不進行任何操縱private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {@Overridepublic void onManagerConnected(int status) {switch (status) {case LoaderCallbackInterface.SUCCESS:{System.loadLibrary("image_proc");} break;default:{super.onManagerConnected(status);} break;}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btnProc = (Button) findViewById(R.id.btn_gray_process);imageView = (ImageView) findViewById(R.id.image_view);//將lena圖像加載程序中并進行表現(xiàn)bmp = BitmapFactory.decodeResource(getResources(), R.drawable.lena);imageView.setImageBitmap(bmp);btnProc.setOnClickListener(this);}@Overridepublic void onClick(View v) {int w = bmp.getWidth();int h = bmp.getHeight();int[] pixels = new int[w*h]; bmp.getPixels(pixels, 0, w, 0, 0, w, h);int[] resultInt = ImageProc.grayProc(pixels, w, h);Bitmap resultImg = Bitmap.createBitmap(w, h, Config.ARGB_8888);resultImg.setPixels(resultInt, 0, w, 0, 0, w, h);imageView.setImageBitmap(resultImg); }@Overridepublic void onResume(){super.onResume();//通過OpenCV引擎服務加載并初始化OpenCV類庫,所謂OpenCV引擎服務即是//OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安裝包的apk目錄中OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);} }
    ?代碼第28行:System.loadLibrary("image_proc")用來當OpenCV類庫初始化實現(xiàn)后加載類庫image_proc。此類庫由我們來生成,用于實現(xiàn)圖像灰度處理的操縱,此部分將在下面中說明。

    ?


    ??(4) ImageProc.java

    ?

    package com.iron.grayprocess2;public class ImageProc {public static native int[] grayProc(int[] pixels, int w, int h); }

    ?


    ?ImageProc.java中只定義了方法grayProc,關鍵字native標明,此方法的實現(xiàn)由本地代碼(C/C++)來實現(xiàn)。


    ?

    編寫JNI及C相關代碼

    ????????在項目中新建目錄jni,在jni目錄中分離添加文件Android.mk,Application.mk,ImageProc.h,ImageProc.cpp,這四個文件的內容分離如下所示。

    ??????? (1) Android.mk

    ?

    LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) include ../OpenCV-SDK/native/jni/OpenCV.mk LOCAL_SRC_FILES := ImageProc.cpp LOCAL_MODULE := image_proc include $(BUILD_SHARED_LIBRARY)

    ?

    代碼說明:

    第一行:指明當前編譯路徑;

    第二行:清空變量;

    第三行:將OpenCV類庫中的編譯文件包含進來,如此一來在我們的工程中即可應用OpenCV類庫;

    第四行:指定須要編譯的C++源文件;

    第五行:指定編譯生成的類庫名稱;

    第六行:調用命令將源文件編譯為靜態(tài)庫。

    注:第三行指定的路徑很關鍵,當opencv類庫與工程路徑相關位置產生改變時,此路徑也要隨之改變。


    (2) Application.mk(配置文件)

    ?

    APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a APP_PLATFORM := android-8

    ?


    (3)ImageProc.cpp

    ?

    #include <ImageProc.h> #include <opencv2/core/core.hpp> #include <string> #include <vector>using namespace cv; using namespace std;JNIEXPORT jintArray JNICALL Java_com_iron_grayprocess2_ImageProc_grayProc(JNIEnv* env, jclass obj, jintArray buf, jint w, jint h){jint *cbuf;cbuf = env->GetIntArrayElements(buf, false);if(cbuf == NULL){return 0;}Mat imgData(h, w, CV_8UC4, (unsigned char*)cbuf);uchar* ptr = imgData.ptr(0);for(int i = 0; i < w*h; i ++){//計算公式:Y(亮度) = 0.299*R + 0.587*G + 0.114*B//對于一個int四字節(jié),其黑色值存儲方法為:BGRAint grayScale = (int)(ptr[4*i+2]*0.299 + ptr[4*i+1]*0.587 + ptr[4*i+0]*0.114);ptr[4*i+1] = grayScale;ptr[4*i+2] = grayScale;ptr[4*i+0] = grayScale;}int size=w * h;jintArray result = env->NewIntArray(size);env->SetIntArrayRegion(result, 0, size, cbuf);env->ReleaseIntArrayElements(buf, cbuf, 0);return result; }

    ?

    說明:

    • ImageProc.h頭文件可以通過jdk提供的工具javah來生成,詳細生成方法在下面
    • JNI中的定義的函數(shù)遵循必定的命名規(guī)則:Java_包名_類名_方法名,詳細參考JNI編程相關知識;
    • ImageProc.cpp中利用黑色值轉換為灰度值的計算公式,將lena.jpg圖像的每一個像素轉換為灰度值,并返回給應用層。須要注意的是對于 ARGB_8888類型的圖像而言,其每一個像素值在int型數(shù)據(jù)中的存儲序列為BGRA。 還須要注 ImageProc.cpp 這個文件 第10行的函數(shù)名稱Java_包名_類名_方法名 請修改成.h 文件生成的那個函數(shù)名?
    生成.h 文件


    1.首先當年寫完ImageProc.java 這個保存 當前 eclipse會自動幫你生成 java 的class文件

    ? ?你可以再工程目錄--》 bin --》classes -》com -------。。。。。 的文件里找到

    ? ?比如我的 在E:\work\op\OpenCV-2.4.5-android-sdk\samples\Test2\bin\classes\com\test2\test2 這個路徑下

    如圖


    2.將classes文件拷貝到e盤根目錄下

    然后打開 cmd?

    e:

    cd classes

    javah com.test2.test2.ImageProc

    然后就會在classes文件里找到一個 xxx.的頭文件 如圖


    你可以將這個頭文件改成任意名字 比如我們上面的ImageProc.h 然后放入工程目錄的jni中


    編譯運行方法有兩種

    1 配置eclipse自動運行

    第一步:轉換工程。點擊“文件 -> 新建 -> 其他”(快捷鍵:Ctrl+N)。選擇“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。進 入“下一步”。


    第二步:選中你剛才建的“HelloJni”工程,下面左邊選“Makefile project”右側選“Cygwin GCC”。肯定后提示的“透視圖”不清楚是什么,點擊“是”即可。

    第三步:在“HelloJni”工程上右鍵,選擇“屬性”。配置“C/C++ Build”和“C/C++ General -> Paths and Symbols”。

    C/C++ Build:點擊“C/C++ Build”,在右側的“Builder Settings”中去掉默許勾選的“Use default build command”復選框。設置Build command為“
    ${NDKROOT}/ndk-build.cmd "


    C/C++ General -> Paths and Symbols:在Includes下add新的GNU C依賴路徑。此“HelloJni”工程須要“D:\Java\android-ndk-r8\platforms\android-8\arch-arm\usr\include”即可,當前根據(jù)不同項目選擇不同的依賴庫。


    這里只要是你cpp文件里面文件包含目錄

    你可以直接在NDK 和opencv jni那個目錄下搜索頭文件名 然后看看在那個路徑有

    配置好后運行就行了

    ?


    2.手動應用Cygwin 生成os 然后運行

    ?由于程序中涉及到了JNI編程,因此須要用cygwin對其中的C/C++代碼進行編譯。打開cygwin,進入到工程的根目錄中執(zhí)行命令:$NDKROOT/ndk-build實現(xiàn)相關編譯;當前在eclipse中刷新工程GrayProcess2,運行即可。編譯及運行結果分離如下所示。


    ? ??



    到這里兩種方法都結束了!


    有問題請留言

    或者279291014@qq.com

    ?




    文章結束給大家分享下程序員的一些笑話語錄: Borland說我很有前途,Sun笑了;Sun說我很有錢,IBM笑了;IBM說我很專業(yè),Sybase笑了;Sybase說我數(shù)據(jù)庫很牛,Oracle笑了;Oracle說我是開放的,Linux笑了;Linux說我要打敗Unix,微軟笑了;微軟說我的系統(tǒng)很穩(wěn)定,我們都笑了。

    總結

    以上是生活随笔為你收集整理的安装目录opencv for android 教程(环境搭建篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。