From 4a286f964753bd1d031fee477a0f7355caa9a39d Mon Sep 17 00:00:00 2001 From: Canming Huang Date: Wed, 22 Jul 2015 17:50:42 -0400 Subject: [PATCH] Added x86_64 and arm64_v8a to Android build. --- .../Android/PedestrianDetectionActivity.cs | 2 +- .../Android/Resources/Resource.Designer.cs | 2 +- .../tesseract/libtesseract/CMakeLists.txt | 10 +++--- .../Emgu.CV.Test.Android/Emgu.CV.Test.csproj | 35 ++++++++++++++++++- .../Resources/Resource.designer.cs | 2 +- Emgu.CV/Emgu.CV.Android.csproj | 12 +++++-- Emgu.CV/PInvoke/Android/MatAndroid.cs | 8 ++--- platforms/android/scripts/rebuild_all.bat | 7 ++++ 8 files changed, 61 insertions(+), 17 deletions(-) diff --git a/Emgu.CV.Example/Android/PedestrianDetectionActivity.cs b/Emgu.CV.Example/Android/PedestrianDetectionActivity.cs index cd2460ecc..bbdc4d49c 100644 --- a/Emgu.CV.Example/Android/PedestrianDetectionActivity.cs +++ b/Emgu.CV.Example/Android/PedestrianDetectionActivity.cs @@ -41,7 +41,7 @@ namespace AndroidExamples return; Rectangle[] pedestrians = FindPedestrian.Find(image.Mat, false, true, out time); - SetMessage(String.Format("Detection completed in {0} milliseconds.", time)); + SetMessage(String.Format("Detection completed with {1} in {0} milliseconds.", time, CvInvoke.UseOpenCL ? "OpenCL" : "CPU")); foreach (Rectangle rect in pedestrians) { image.Draw(rect, new Bgr(System.Drawing.Color.Red), 2); diff --git a/Emgu.CV.Example/Android/Resources/Resource.Designer.cs b/Emgu.CV.Example/Android/Resources/Resource.Designer.cs index a28b9acb3..b11f6bdbe 100644 --- a/Emgu.CV.Example/Android/Resources/Resource.Designer.cs +++ b/Emgu.CV.Example/Android/Resources/Resource.Designer.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.0 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/Emgu.CV.Extern/tesseract/libtesseract/CMakeLists.txt b/Emgu.CV.Extern/tesseract/libtesseract/CMakeLists.txt index 0ad2eda82..2895c1116 100644 --- a/Emgu.CV.Extern/tesseract/libtesseract/CMakeLists.txt +++ b/Emgu.CV.Extern/tesseract/libtesseract/CMakeLists.txt @@ -286,11 +286,11 @@ LIST(REMOVE_ITEM tesseract_api_srcs ${tesseract_api_srcs_excludes}) file(GLOB tesseract_api_hdrs "${TESSERACT_DIR}/api/*.h") file(GLOB tesseract_api_hdrs_excludes "${TESSERACT_DIR}/api/capi.h") LIST(REMOVE_ITEM tesseract_api_hdrs ${tesseract_api_hdrs_excludes}) -IF(ANDROID) - LIST(APPEND tesseract_api_hdrs "${CMAKE_CURRENT_SOURCE_DIR}/glob/android/glob.h") - LIST(APPEND tesseract_api_srcs "${CMAKE_CURRENT_SOURCE_DIR}/glob/android/glob.c") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/glob/android") -ENDIF() +#IF(ANDROID) +# LIST(APPEND tesseract_api_hdrs "${CMAKE_CURRENT_SOURCE_DIR}/glob/android/glob.h") +# LIST(APPEND tesseract_api_srcs "${CMAKE_CURRENT_SOURCE_DIR}/glob/android/glob.c") +# include_directories("${CMAKE_CURRENT_SOURCE_DIR}/glob/android") +#ENDIF() source_group("Src" FILES ${tesseract_api_srcs}) source_group("Include" FILES ${tesseract_api_hdrs}) add_definitions(-DUSE_STD_NAMESPACE -DHAVE_LIBLEPT) diff --git a/Emgu.CV.Test/Emgu.CV.Test.Android/Emgu.CV.Test.csproj b/Emgu.CV.Test/Emgu.CV.Test.Android/Emgu.CV.Test.csproj index 10b4339df..0cc3d9003 100644 --- a/Emgu.CV.Test/Emgu.CV.Test.Android/Emgu.CV.Test.csproj +++ b/Emgu.CV.Test/Emgu.CV.Test.Android/Emgu.CV.Test.csproj @@ -29,6 +29,17 @@ 4 None false + True + + True + False + False + armeabi,armeabi-v7a,x86 + + + Xamarin + False + True true @@ -36,8 +47,22 @@ prompt 4 false - false + False ANDROID + + SdkOnly + True + False + False + armeabi,armeabi-v7a,x86,x86_64,arm64-v8a + + + Xamarin + False + False + False + False + False @@ -238,4 +263,12 @@ Assets\cat.png + + + Assets\trained_classifierNM1.xml + + + Assets\trained_classifierNM2.xml + + \ No newline at end of file diff --git a/Emgu.CV.Test/Emgu.CV.Test.Android/Resources/Resource.designer.cs b/Emgu.CV.Test/Emgu.CV.Test.Android/Resources/Resource.designer.cs index 49ea8bd28..68f074e11 100644 --- a/Emgu.CV.Test/Emgu.CV.Test.Android/Resources/Resource.designer.cs +++ b/Emgu.CV.Test/Emgu.CV.Test.Android/Resources/Resource.designer.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34014 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/Emgu.CV/Emgu.CV.Android.csproj b/Emgu.CV/Emgu.CV.Android.csproj index 694aeac20..b48ca361b 100644 --- a/Emgu.CV/Emgu.CV.Android.csproj +++ b/Emgu.CV/Emgu.CV.Android.csproj @@ -81,16 +81,22 @@ lib\armeabi-v7a\libcvextern.so + + lib\arm64-v8a\libcvextern.so + lib\x86\libcvextern.so + + lib\x86_64\libcvextern.so + - + Emgu.CV.License.txt PreserveNewest - - + + diff --git a/Emgu.CV/PInvoke/Android/MatAndroid.cs b/Emgu.CV/PInvoke/Android/MatAndroid.cs index b193d7409..a1314a436 100644 --- a/Emgu.CV/PInvoke/Android/MatAndroid.cs +++ b/Emgu.CV/PInvoke/Android/MatAndroid.cs @@ -24,12 +24,10 @@ namespace Emgu.CV : this() { using (Stream imageStream = assets.Open(fileName)) + using (MemoryStream ms = new MemoryStream()) { - using (BinaryReader br = new BinaryReader(imageStream)) - { - byte[] b = br.ReadBytes((int)imageStream.Length); - CvInvoke.Imdecode(b, LoadImageType.AnyColor | LoadImageType.AnyDepth, this); - } + imageStream.CopyTo(ms); + CvInvoke.Imdecode(ms.ToArray(), LoadImageType.AnyColor | LoadImageType.AnyDepth, this); } } diff --git a/platforms/android/scripts/rebuild_all.bat b/platforms/android/scripts/rebuild_all.bat index 60ba994ad..220c4f0d8 100644 --- a/platforms/android/scripts/rebuild_all.bat +++ b/platforms/android/scripts/rebuild_all.bat @@ -16,15 +16,22 @@ rm -rf build_x86 :END_CLEAN call platforms\android\scripts\build armeabi call platforms\android\scripts\build armeabi-v7a +call platforms\android\scripts\build arm64-v8a call platforms\android\scripts\build x86 +call platforms\android\scripts\build x86_64 + unzip build_armeabi\libemgucv-android-armeabi -d build unzip build_armeabi-v7a\libemgucv-android-armeabi-v7a -d build +unzip build_arm64-v8a\libemgucv-android-arm64-v8a -d build unzip build_x86\libemgucv-android-x86 -d build +unzip build_x86_64\libemgucv-android-x86_64 -d build cd build mkdir libemgucv-android xcopy libemgucv-android-x86 libemgucv-android /E /Y +xcopy libemgucv-android-x86_64 libemgucv-android /E /Y xcopy libemgucv-android-armeabi libemgucv-android /E /Y xcopy libemgucv-android-armeabi-v7a libemgucv-android /E /Y +xcopy libemgucv-android-arm64-v8a libemgucv-android /E /Y cd libemgucv-android mv bin libs xcopy sdk\native\libs libs /E /Y