導航:首頁 > 操作系統 > opencvandroidsdk

opencvandroidsdk

發布時間:2023-03-24 08:59:49

『壹』 android NDK交叉編譯openCV

注意android-ndk-r16b-linux-x86_64.zip編譯測試程序時候會link出錯,配局仿建議用r18b

build下就生成培纖我們需要的OpenCV sdk。

編譯完成

用如下CMakeLists.txt編臘簡譯運行程序

『貳』 如何在Android中使用OpenCV

1、下載
進入官網下載OpenCV4Android並解壓

其中,sdk目錄即是我們開發opencv所需要的類庫;samples目錄中存放著若干opencv應用示例(包括人臉檢測等),可為我們進行android下的opencv開發提供參考;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類庫而無法運行(下篇文章會介紹不提前安裝openCV Manager,即可運行openCV的方法)。
2、將OpenCV引入Android Studio
在Android Studio中選擇File->Import Mole,找到OpenCV解壓的路徑,選擇sdk/java文件夾

3、更新build.gradle信息
在Android Studio中的左上角選擇Project視圖,在oepnCVLibrary2411文件夾里,打開build.gradle(有很多重名的文件,一定找對openCV庫文件下的),修改文件中的1)compileSdkVersion 2)buildToolsVersion 3) minSdkVersion 4)targetSdkVersion,將其內容與app文件夾下的build.gradle中信息相一致。點擊上方提示的黃色提示框內的Try Again進行更新。
4、添加Mole Dependency
右鍵app文件夾,選擇Open Mole Settings,在app mole的Dependencies一欄中,點擊右上角的綠色加號,將openCVLibrary2411添加進去,點擊確定。

5、復制libs文件夾到項目中
在OpenCV的解壓包中,將sdk-->native-->libs文件夾復制,粘貼在Project視圖下app-->src-->main目錄下,並將其重命名為jniLibs。
自此,OpenCV的環境就配置好了。可以將OpenCV-android-sdk-->samples-->tutorial-1-camerapreview中的layout文件,java文件,放入工程中,修改AndroidManifest.xml,添加使用攝像機的許可權,即可測試是否成功了。

『叄』 如何在Android中使用OpenCV

找一個opencv for android的sdk。
項攜數目中加入這個sdk.
,然後簡單測試冊隱毀一下。州備

『肆』 如何在android studio上加入OpenCV庫

1.安裝 NDK, 下載android-ndk-r8e-windows-x86.zip, 解壓至本激帆地(android-ndk-r8e-windows-x86_64.zip解壓後不包含prebuilt文件夾,sample中的hello-jni運行毀空報錯)

2.配置環境變數$NDKROOT=android-ndk的文件夾路徑

3.eclipse安裝CDT插件,Eclipse->help->Install software,在"available software sites"中選擇相應的CDT路徑,安裝

4.下載最新的OpenCV for Anroid庫OpenCV-2.4.4-android-sdk.zip ,解壓至明余雹本地

5.編譯生成openCV的jar庫文件
1)eclipse中導入OpenCV-2.4.4-android-sdk\sdk\java文件夾
2)添加openCV Library工程的C++工程屬性,右鍵project名稱->New->other->C/C++->Convert to a C/C++ Project(Adds C/C++ Nature)
3)為project 配置ndk built路徑。右鍵project->Properties->C/C++ build, 設置Build command: ${NDKROOT}/ndk-build.cmd; behavior選項中的不勾clean
4)編譯工程, /bin文件夾下生成opencv library - 2.4.4.jar

6. 在目標Adnroid應用程序中添加對opencv library - 2.4.4.jar 的引用,便可以調用相應的open CV庫函數了

『伍』 為什麼Android Studio不能導入OpenCV的SDK

AS 只能導入Eclipse 或AS 的mole。

剛好我這里也有一份openCV的SDK,可以看到OpenCv/sdk 這個目錄有一個build.gradle,看起來是AS 的mole目錄,但是仔細看看,你會發現,並不是。as 的目錄,在 build.gradle平級裡面應該有 src/main/java(res),所以這並不是AS的,那麼是不是Eclipse的?年代太久遠的了,記不清了。

我的做法:

  1. 新建Mole

  2. 復制opencv/sdk/java/src、res、AndroidManifest.xml 到mole

  3. 復制 build.gradle 按需要修改部分內容

『陸』 Android版的opencv下載的sdk里怎麼沒有人臉對比匹配的demo

我不會java。我悄判常用的是c/c++和matlab語言,平台是vs和opencv,這問啟租改題還真幫不了你型圓。

『柒』 如何在Android中使用OpenCV

如何在Android程序中使用OpenCV
有兩種方式(重點講後面一種):
1.使用OpenCV Java API。
OpenCV安裝路徑「F:\OpenCV-2.3.1-android-bin」下有兩個文件夾,
將文件夾「OpenCV-2.3.1」拷貝到你的Eclipse工作空間所在的目錄,也就是在你的項目的上一級目錄中,然後導入到工作空間中,在Package Explorer中選擇你的項目,單機右鍵在彈出菜單中選擇Properties,然後在彈出的Properties窗口中左側選擇Android,然後點擊右下方的Add按鈕,選擇OpenCV-2.3.1並點擊OK,
此時,展開你的項目樹,你可以看到新加了一個OpenCV-2.3.1_src目錄,如下圖,那麼就是正確添加了OpenCV Java API,否則就是你放置OpenCV-2.3.1的目錄路徑不正確。
然後輪搏就可以在你的Java源文件中導入OpenCV的API包,並且使用OpenCV API了,OpenCV API的包的形式如下:
Org.opencv.(OpenCV模塊名)。(OpenCV類名)
例如:
Org.opencv.core.Mat
2.利用JNI編寫C++ OpenCV代數純碼,通過Android NDK創建動態庫(。so)
新建一個工作空間,例如「TestOpenCV」,在Window->Preferences中設置好Android SDK的路徑。
然後新建一個Android項目,Build Target選擇Android2.2,命名為「HaveImgFun」,活動名改為HaveImgFun,Package name中填寫com.testopencv.haveimgfun,最後點擊finish。
如同使用OpenCV Java API那樣,將OpenCV-2.3.1文件夾拷貝到與工作空間同一級目錄中;另外,將「F:\OpenCV-2.3.1-android-bin\samples」下的includeOpenCV.mk文件拷貝到和項目HaveImgFun同一級目錄中:
(上面這個各個文件夾和文件的放置很重要,因為OpenCV-2.3.1下的OpenCV.mk中有很多相對路徑的指定,如果不是這樣放置,在NDK生成動態庫時可能會報文件或文件夾無法找到的錯誤)
選擇Package Explorer中你的項目,右鍵選擇new->folder,新建一個名為jni的文件夾,用來存放你的c/c++代碼。
然後把res->layout下的main.xml的內容改為下面所示:
1 <?xml version=「1.0」 encoding=「utf-8」?> 2 <LinearLayout xmlns:android=「http://schemas.android.com/apk/res/android」 3 android:orientation=「vertical」 4 android:layout_width=「fill_parent」 5 android:layout_height=「fill_parent」 6 > 7 <Button android:layout_height=「wrap_content」 8 android:layout_width=「fill_parent」 9 android:id=「@+id/btnNDK」 10 android:text=「使用C++ OpenCV進行處理」 /> 11 <Button android:layout_height=「wrap_content」 12 android:layout_width=「fill_parent」 13 android:id=「@+id/btnRestore」薯桐咐 14 android:text=「還原」 /> 15 <ImageView android:id=「@+id/ImageView01」 16 android:layout_width=「fill_parent」 17 android:layout_height=「fill_parent」 /> 18 </LinearLayout>
上面的代碼就是一個線性布局裡麵包含2個按鈕加上一個顯示圖像的ImageView
在文件夾src下的com.testopencv.haveimgfun包中新建一個類用於包裝使用了opencv c++代碼的動態庫的導出函數,類名為LibImgFun。
Eclipse會為你創建一個新的文件LibImgFun.java,將裡面的內容改為:
1 package com.testopencv.haveimgfun; 2 public class LibImgFun { 3 static { 4 System.loadLibrary(「ImgFun」); 5 } 6 /** 7 * @param width the current view width 8 * @param height the current view height 9 */ 10 public static native int[] ImgFun(int[] buf, int w, int h); 11 }
從上面的代碼可以得知,我們的動態庫名字應該為「libImgFun.so」,注意「public static native int[] ImgFun(int[] buf, int w, int h)」中的native關鍵字,表明這個函數來自native code。static表示這是一個靜態函數,這樣就可以直接用類名去調用。
在jni文件夾下建立一個「ImgFun.cpp」的文件,內容改為下面所示:
1 #include <jni.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <opencv2/opencv.hpp> 5 using namespace cv;6 7 extern 「C」8 { 9 JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h); 10 JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h){ 11 12 jint *cbuf; 13 cbuf = env->GetIntArrayElements(buf, false); 14 if(cbuf == NULL) 15 { 16 return 0; 17 } 18 19 Mat myimg(h, w, CV_8UC4, (unsigned char*)cbuf); 20 for(int j=0;j<myimg.rows/2;j++) 21 { 22 myimg.row(j)。setTo(Scalar(0,0,0,0)); 23 } 24 25 int size=w * h; 26 jintArray result = env->NewIntArray(size); 27 env->SetIntArrayRegion(result, 0, size, cbuf); 28 env->ReleaseIntArrayElements(buf, cbuf, 0); 29 return result; 30 } 31 }
上面的代碼中#include <jni.h>是必須要包含的頭文件,#include <opencv2/opencv.hpp>是opencv要包含的頭文件。
動態庫要導出的函數如下聲明:
JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h);
JNIEXPORT 和JNICALL是必須要加的關鍵字
jintArray就是int[],這里返回類型要麼為空,要麼為jni中定義的類型,事實上就是C\C++類型前面加上j,如果是數組,則在後面加上Array。
函數名的命名規則如下:
Java_(包路徑)_(類名)_(函數名) (JNIEnv *env, jobject obj, 自己定義的參數…)
包路徑中的「.」用「_」(下劃線)代替,類名就是上麵包裝該動態庫函數的類的名字,最後一個才是真正的函數名;JNIEnv *env和jobject obj這兩個參數時必須的,用來調用JNI環境下的一些函數;後面就是你自己定義的參數。在這里,jintArray buf代表了傳進來的圖像的數據,int w是圖像的寬,int h是圖像的高。
這個函數的功能是將傳進來的圖像的上半部分塗成黑色。
然後再在jni下新建兩個文件「Android.mk」文件和「Application.mk」文件,這兩個文件事實上就是簡單的Makefile文件。
其中將Android.mk的內容改為如下所示:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include /includeOpenCV.mk
ifeq (「$(wildcard $(OPENCV_MK_PATH))」,「」)
#try to load OpenCV.mk from default install location
include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
LOCAL_MODULE := ImgFun
LOCAL_SRC_FILES := ImgFun.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk的內容改為如下所示:
APP_STL:=gnustl_static
APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI:=armeabi armeabi-v7a
其中APP_ABI指定的是目標平台的CPU架構。(經過很多測試,android2.2必須指定為armeabi,android2.2以上的使用armeabi-v7a,如果沒有設置對,很有可能安裝到android虛擬機失敗,當然你同時如上面寫上也是可以的)
上面的步驟完成後,就可以使用NDK生成動態庫了,打開cygwin,cd到項目目錄下:
輸入$NDK/ndk-build命令,開始創建動態庫。
這時候刷新Eclipse的Package Explorer會出現兩個新的文件夾obj和libs。
現在,只剩最後一步完成這個測試程序。
將一張圖片,例如「lena.jpg」放到項目res->drawable-hdpi目錄中並刷新該目錄。
然後將HaveImgFun.java的內容改為下面所示:
1 package com.testopencv.haveimgfun; 2 3 import android.app.Activity; 4 import android.graphics.Bitmap; 5 import android.graphics.Bitmap.Config; 6 import android.graphics.drawable.BitmapDrawable; 7 import android.os.Bundle; 8 import android.widget.Button; 9 import android.view.View; 10 import android.widget.ImageView; 11 12 public class HaveImgFun extends Activity{ 13 /** Called when the activity is first created. */ 14 ImageView imgView; 15 Button btnNDK, btnRestore; 16 17 @Override 18 public void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.main); 21 22 this.setTitle(「使用NDK轉換灰度圖」); 23 btnRestore=(Button)this.findViewById(R.id.btnRestore); 24 btnRestore.setOnClickListener(new ClickEvent()); 25 btnNDK=(Button)this.findViewById(R.id.btnNDK); 26 btnNDK.setOnClickListener(new ClickEvent()); 27 imgView=(ImageView)this.findViewById(R.id.ImageView01); 28 Bitmap img=((BitmapDrawable) getResources()。getDrawable(R.drawable.lena))。getBitmap(); 29 imgView.setImageBitmap(img); 30 } 31 32 class ClickEvent implements View.OnClickListener{ 33 public void onClick(View v){ 34 if(v == btnNDK){35 long current=System.currentTimeMillis(); 36 Bitmap img1=((BitmapDrawable) getResources()。getDrawable(R.drawable.lena))。getBitmap(); 37 int w=img1.getWidth(),h=img1.getHeight(); 38 int[] pix = new int[w * h]; 39 img1.getPixels(pix, 0, w, 0, 0, w, h); 40 int[] resultInt=LibImgFun.ImgFun(pix, w, h); 41 Bitmap resultImg=Bitmap.createBitmap(w, h, Config.RGB_565); 42 resultImg.setPixels(resultInt, 0, w, 0, 0,w, h); 43 long performance=System.currentTimeMillis()-current; 44 imgView.setImageBitmap(resultImg); 45 HaveImgFun.this.setTitle(「w:」+String.valueOf(img1.getWidth())+「,h:」+String.valueOf(img1.getHeight())+「NDK耗時」+String.valueOf(performance)+「 毫秒」); 46 } else if(v == btnRestore){ 47 Bitmap img2=((BitmapDrawable) getResources()。getDrawable(R.drawable.lena))。getBitmap(); 48 imgView.setImageBitmap(img2); 49 HaveImgFun.this.setTitle(「使用OpenCV進行圖像處理」);50 } 51 }52 } 53 }
點擊全部保存,OK,現在可以選擇一個Android虛擬機運行看一下效果,配置好Run Configuration然後點擊Run,得到下面的結果:
點擊使用C++ OpenCV進行處理,得到下面的結果:

『捌』 opencv for android 如何實現後台啟動攝像頭,不顯示預覽界面

現在Android智能手機的像素都會提供照相的功能,大部分的手機的攝像頭的像素都在1000萬以上的像素,有的甚至會更高。它們大多都會支持光學變焦、曝光以及快門等等。
下面的程序Demo實例示範了使用Camera v2來進行拍照,當用戶按下拍照鍵時,該應用會自動對焦,當對焦成功時拍下照片。

『玖』 怎樣在eclipse中載入opencv for android

在Android中使用Opencv

使用opencv有兩種方式,一種是使用opencv的java版本的API,但是這種方式不是通過本地調用實現的,全部都是java代碼,所以這里先不講,另外一種方式就是使用opencv的c++版本的API,將本地c++代碼編譯成.so鏈接庫,然後在安卓開發中進行調用,本地cpp代碼使用NDK進行編譯。

5.1
安卓代碼

下面給出一個使用Canny運算元檢測邊緣的本地代碼調用的使用方式。

新建安卓項目,配置使用安卓API等信息,這里我的項目名稱為HaveImgFun

然後修改界面控制文件res->layout->activity_have_img_fun.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/btnNDK"
android:text="使用C++ OpenCV進行處理" />
<Button android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/btnRestore"
android:text="還原" />
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>

在文件夾src下的com.testopencv.haveimgfun包中新建一個類用於包裝使用了opencv
c++代碼的動態庫的導出函數,類名為LibImgFun。

Eclipse會為你創建一個新的文件LibImgFun.java,將裡面的內容改為:
package com.testopencv.haveimgfun;
public class LibImgFun {
static {
System.loadLibrary("ImgFun");
}
/**
* @param width the current view width
* @param height the current view height
*/
public static native int[] ImgFun(int[] buf, int w, int h);
}

從上面的代碼可以得知,我們的動態庫名字應該為「libImgFun.so」,注意"public
static native int[] ImgFun(int[] buf, int w, int h)"中的native關鍵字,表明這個函數來自native
code。static表示這是一個靜態函數,這樣就可以直接用類名去調用。

修改功能代碼,修改HaveImgFun.java的代碼,代碼內容如下:
package com.testopencv.haveimgfun;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.ImageView;

public class HaveImgFun extends Activity {
/** Called when the activity is first created. */
ImageView imgView;
Button btnNDK, btnRestore;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_have_img_fun);

this.setTitle("使用NDK轉換灰度圖");
btnRestore = (Button) this.findViewById(R.id.btnRestore);
btnRestore.setOnClickListener(new ClickEvent());
btnNDK = (Button) this.findViewById(R.id.btnNDK);
btnNDK.setOnClickListener(new ClickEvent());
imgView = (ImageView) this.findViewById(R.id.ImageView01);
Bitmap img = ((BitmapDrawable) getResources().getDrawable(
R.drawable.lena)).getBitmap();
imgView.setImageBitmap(img);
}

class ClickEvent implements View.OnClickListener {
public void onClick(View v) {
if (v == btnNDK) {
long current = System.currentTimeMillis();
Bitmap img1 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.lena)).getBitmap();
int w = img1.getWidth(), h = img1.getHeight();
int[] pix = new int[w * h];
img1.getPixels(pix, 0, w, 0, 0, w, h);
int[] resultInt = LibImgFun.ImgFun(pix, w, h);
Bitmap resultImg = Bitmap.createBitmap(w, h, Config.RGB_565);
resultImg.setPixels(resultInt, 0, w, 0, 0, w, h);
long performance = System.currentTimeMillis() - current;
imgView.setImageBitmap(resultImg);
HaveImgFun.this.setTitle("w:" + String.valueOf(img1.getWidth())
+ ",h:" + String.valueOf(img1.getHeight()) + "NDK耗時"
+ String.valueOf(performance) + " 毫秒");
} else if (v == btnRestore) {
Bitmap img2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.lena)).getBitmap();
imgView.setImageBitmap(img2);
HaveImgFun.this.setTitle("使用OpenCV進行圖像處理");
}
}
}
}

5.2 C++代碼

在項目中新建一個jni文件,用於放置該項目的所有cpp代碼。

在jni文件夾下建立一個"ImgFun.cpp"的文件,內容改為下面所示:

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <opencv2/opencv.hpp>
using namespace cv;
IplImage * change4channelTo3InIplImage(IplImage * src);

extern "C" {
JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(
JNIEnv* env, jobject obj, jintArray buf, int w, int h);
JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(
JNIEnv* env, jobject obj, jintArray buf, int w, int h) {

jint *cbuf;
cbuf = env->GetIntArrayElements(buf, false);
if (cbuf == NULL) {
return 0;
}

Mat myimg(h, w, CV_8UC4, (unsigned char*) cbuf);
IplImage image=IplImage(myimg);
IplImage* image3channel = change4channelTo3InIplImage(&image);

IplImage* pCannyImage=cvCreateImage(cvGetSize(image3channel),IPL_DEPTH_8U,1);

cvCanny(image3channel,pCannyImage,50,150,3);

int* outImage=new int[w*h];
for(int i=0;i<w*h;i++)
{
outImage[i]=(int)pCannyImage->imageData[i];
}

int size = w * h;
jintArray result = env->NewIntArray(size);
env->SetIntArrayRegion(result, 0, size, outImage);
env->ReleaseIntArrayElements(buf, cbuf, 0);
return result;
}
}

IplImage * change4channelTo3InIplImage(IplImage * src) {
if (src->nChannels != 4) {
return NULL;
}

IplImage * destImg = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);
for (int row = 0; row < src->height; row++) {
for (int col = 0; col < src->width; col++) {
CvScalar s = cvGet2D(src, row, col);
cvSet2D(destImg, row, col, s);
}
}

return destImg;
}
在上面的代碼中,給出了簡單的Canny運算元檢測邊緣的代碼,並且返回檢測後的圖像顯示。
上面的代碼中#include
<jni.h>是必須要包含的頭文件,#include
<opencv2/opencv.hpp>是opencv要包含的頭文件。

5.3
配置文件

然後再在jni下新建兩個文件"Android.mk"文件和"Application.mk"文件,這兩個文件事實上就是簡單的Makefile文件。

使用NDK進行編譯的時候,需要使用Android.mk和Application.mk兩個文件。

Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
include E:\java\OpenCV-2.4.5-android-sdk\sdk\native\jni\OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
LOCAL_MODULE := ImgFun
LOCAL_SRC_FILES := ImgFun.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk: APP_STL:=gnustl_static
APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI:=armeabi armeabi-v7a
在Android.mk文件中,需要主要修改的代碼是如下一行: include E:\java\OpenCV-2.4.5-android-sdk\sdk\native\jni\OpenCV.mk

這里需要將Android
SDK中的OpenCV.mk文件包含進來,可以使用相對路徑或者絕對路徑。但是最好不要將Android
SDK放在和工作空間不在一個磁碟分區的地方,這樣很容易出錯。

然後需要使用LOCAL_SRC_FILES包含需要編譯的文件。

5.4
編譯本地C++代碼

編譯本地C++代碼可以使用Cygwin進行編譯,cd
到項目目錄,然後運行ndk-build

也可以使用windows控制台進行編譯,同樣cd到項目目錄,運行ndk-build

還可以使用Eclipse進行編譯,建議配置使用Eclipse進行編譯,這樣當項目的本地cpp代碼發生變化的時候就可以實現自動的cpp代碼編譯,不用每次都在命令行中手動的進行編譯,雖然使用黑乎乎的命令行手動編譯,輸出一堆信息顯著很牛逼的樣子。

(一下內容,如果使用cygwin進行編譯,則不需要進行操作,直接使用cygwin或者命令行進行編譯,保證編譯通過以後即可運行程序,如果選擇使用Eclipse自動進行編譯,則參考一下內容進行配置)

首先需要將該項目轉換到C++項目,使得該項目具有C++代碼屬性,如下所述。

點擊項目,右擊,
New
-> Other -> C/C++ -> Convert to a C/C++ Project .

配置Eclipse對cpp代碼進行編譯:

首先需要給當前項目添加一個編譯環境變數

如下目錄

open
Eclipse menu Window -> Preferences -> C/C++ -> Build
-> Environment ,

點擊
Add...

添加一個NDKROOT,並且設置值為Android
SDK的根目錄。

然後設置編譯的一些參數

Project
Properties -> C/C++ Build , uncheck Use
default build command ,
replace 「Build command」 text from "make"
to

"${NDKROOT}/ndk-build.cmd"
on Windows,

"${NDKROOT}/ndk-build"
on Linux and MacOS.

『拾』 openCV Android接入SDK,jnilibs 太多了,打包出來將近100m,是否可以刪除部分的os庫

不能。
我打包的openCv 總共300多m,openCv JniLibs 有136m,整個項目加其他1G多,打包發布只有50M左右,也還好。
如果你脊埋想小一點的話,可以只保留 armeabi-v7a 或者 armeabi,但是要注意,再添加別的SDK的時候也只能只保留armeabi-v7a 或者armeabi ,有其他文件夾的話,而OpenCV游沒有加進去的話,會報渣渣錯。
只保留armeabi-v7a 或 armeabi 能兼容如野悄大部分的手機

閱讀全文

與opencvandroidsdk相關的資料

熱點內容
請問誰有免費的男人網站? 瀏覽:75
58pdf 瀏覽:768
年輕人愛看的免費的電影網站 瀏覽:782
天津水游城電影院今日影訊簡介 瀏覽:99
lin運演算法則 瀏覽:574
天刀命令 瀏覽:132
韓國電影在閣樓偷窺女主的 瀏覽:417
葉天明與柳韻小說 瀏覽:517
優盤加密文件和投屏沖突 瀏覽:537
韓國推理電影免費在線觀看 瀏覽:646
php修改資料庫欄位 瀏覽:431
老司機看片入口 瀏覽:890
梁山正信樓電影院買票入口 瀏覽:59
消失的眼角膜未刪減版 瀏覽:196
目前安卓平板什麼處理器最好 瀏覽:528
中考幫pdf 瀏覽:678
愛搞影視網站 瀏覽:566
我要片子的網站 瀏覽:501
androidx軸y軸 瀏覽:556
簡愛演員表英國1970 瀏覽:698