diff --git a/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java b/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java index e9a4a7ac4..0ea89a41a 100644 --- a/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java +++ b/modules/java/android_test/src/org/opencv/test/OpenCVTestRunner.java @@ -26,7 +26,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner { private AndroidTestRunner androidTestRunner; private static String TAG = "opencv_test_java"; - + public static String getTempFileName(String extension) { File cache = context.getCacheDir(); @@ -46,7 +46,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner { static public void Log(String message) { Log.e(TAG, message); } - + static public void Log(Mat m) { Log.e(TAG, m + "\n " + m.dump()); } @@ -54,12 +54,13 @@ public class OpenCVTestRunner extends InstrumentationTestRunner { @Override public void onStart() { context = getContext(); - LENA_PATH = Utils.ExportResource(context, R.drawable.lena); - CHESS_PATH = Utils.ExportResource(context, R.drawable.chessboard); - LBPCASCADE_FRONTALFACE_PATH = Utils.ExportResource(context, R.raw.lbpcascade_frontalface); + LENA_PATH = Utils.exportResource(context, R.drawable.lena); + CHESS_PATH = Utils.exportResource(context, R.drawable.chessboard); + LBPCASCADE_FRONTALFACE_PATH = Utils.exportResource(context, R.raw.lbpcascade_frontalface); /* - * The original idea about test order randomization is from marek.defecinski blog. + * The original idea about test order randomization is from + * marek.defecinski blog. */ // List testCases = androidTestRunner.getTestCases(); // Collections.shuffle(testCases); //shuffle the tests order @@ -72,7 +73,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner { androidTestRunner = super.getAndroidTestRunner(); return androidTestRunner; } - + public static String getOutputFileName(String name) { return context.getExternalFilesDir(null).getAbsolutePath() + File.separatorChar + name; diff --git a/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java b/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java index 93adca117..082e26cae 100644 --- a/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java +++ b/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java @@ -16,6 +16,14 @@ public class UtilsTest extends OpenCVTestCase { fail("Not yet implemented"); } + public void testLoadResourceContextInt() { + fail("Not yet implemented"); + } + + public void testLoadResourceContextIntInt() { + fail("Not yet implemented"); + } + public void testMatToBitmap() { fail("Not yet implemented"); } diff --git a/modules/java/src/java/android+Utils.java b/modules/java/src/java/android+Utils.java index 7e0f668d8..6ffa2238d 100644 --- a/modules/java/src/java/android+Utils.java +++ b/modules/java/src/java/android+Utils.java @@ -1,62 +1,92 @@ -package org.opencv.android; - -import org.opencv.core.CvException; -import org.opencv.core.Mat; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -import android.content.Context; -import android.graphics.Bitmap; - -public class Utils { - - public static String ExportResource(Context context, int resourceId) { - return ExportResource(context, resourceId, "OpenCV_data"); - } - - public static String ExportResource(Context context, int resourceId, String dirname) { - String fullname = context.getResources().getString(resourceId); - String resName = fullname.substring(fullname.lastIndexOf("/") + 1); - try { - InputStream is = context.getResources().openRawResource(resourceId); - File resDir = context.getDir(dirname, Context.MODE_PRIVATE); - File resFile = new File(resDir, resName); - - FileOutputStream os = new FileOutputStream(resFile); - - byte[] buffer = new byte[4096]; - int bytesRead; - while ((bytesRead = is.read(buffer)) != -1) { - os.write(buffer, 0, bytesRead); - } - is.close(); - os.close(); - - return resFile.getAbsolutePath(); - } catch (IOException e) { - e.printStackTrace(); - throw new CvException("Failed to export resource " + resName - + ". Exception thrown: " + e); - } - } - - public static Mat BitmapToMat(Bitmap b) { - return new Mat(nBitmapToMat(b)); - } - - public static boolean MatToBitmap(Mat m, Bitmap b) { - return nMatToBitmap(m.nativeObj, b); - } - - // native stuff - static { - System.loadLibrary("opencv_java"); - } - - private static native long nBitmapToMat(Bitmap b); - - private static native boolean nMatToBitmap(long m, Bitmap b); -} +package org.opencv.android; + +import android.content.Context; +import android.graphics.Bitmap; + +import org.opencv.core.CvException; +import org.opencv.core.CvType; +import org.opencv.core.Mat; +import org.opencv.highgui.Highgui; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class Utils { + + public static String exportResource(Context context, int resourceId) { + return exportResource(context, resourceId, "OpenCV_data"); + } + + public static String exportResource(Context context, int resourceId, String dirname) { + String fullname = context.getResources().getString(resourceId); + String resName = fullname.substring(fullname.lastIndexOf("/") + 1); + try { + InputStream is = context.getResources().openRawResource(resourceId); + File resDir = context.getDir(dirname, Context.MODE_PRIVATE); + File resFile = new File(resDir, resName); + + FileOutputStream os = new FileOutputStream(resFile); + + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = is.read(buffer)) != -1) { + os.write(buffer, 0, bytesRead); + } + is.close(); + os.close(); + + return resFile.getAbsolutePath(); + } catch (IOException e) { + e.printStackTrace(); + throw new CvException("Failed to export resource " + resName + + ". Exception thrown: " + e); + } + } + + public static Mat loadResource(Context context, int resourceId) throws IOException + { + return loadResource(context, resourceId, -1); + } + + public static Mat loadResource(Context context, int resourceId, int flags) throws IOException + { + InputStream is = context.getResources().openRawResource(resourceId); + ByteArrayOutputStream os = new ByteArrayOutputStream(is.available()); + + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = is.read(buffer)) != -1) { + os.write(buffer, 0, bytesRead); + } + is.close(); + + Mat encoded = new Mat(1, os.size(), CvType.CV_8U); + encoded.put(0, 0, os.toByteArray()); + os.close(); + + Mat decoded = Highgui.imdecode(encoded, flags); + encoded.release(); + + return decoded; + } + + public static Mat bitmapToMat(Bitmap b) { + return new Mat(nBitmapToMat(b)); + } + + public static boolean matToBitmap(Mat m, Bitmap b) { + return nMatToBitmap(m.nativeObj, b); + } + + // native stuff + static { + System.loadLibrary("opencv_java"); + } + + private static native long nBitmapToMat(Bitmap b); + + private static native boolean nMatToBitmap(long m, Bitmap b); +} diff --git a/modules/java/src/java/features2d+DMatch.java b/modules/java/src/java/features2d+DMatch.java index 96914c51d..ac864063e 100644 --- a/modules/java/src/java/features2d+DMatch.java +++ b/modules/java/src/java/features2d+DMatch.java @@ -48,7 +48,7 @@ public class DMatch { /** * less is better */ - boolean lessThan(DMatch it) { + public boolean lessThan(DMatch it) { return distance < it.distance; } diff --git a/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java b/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java index 336553831..a4d18ae71 100644 --- a/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java +++ b/samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java @@ -137,7 +137,7 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener { drawGrid(cols, rows); Bitmap bmp = Bitmap.createBitmap(cols, rows, Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba15, bmp)) + if (Utils.matToBitmap(mRgba15, bmp)) return bmp; bmp.recycle(); diff --git a/samples/android/face-detection/src/org/opencv/samples/fd/FdView.java b/samples/android/face-detection/src/org/opencv/samples/fd/FdView.java index ff74d12b6..538bbdb84 100644 --- a/samples/android/face-detection/src/org/opencv/samples/fd/FdView.java +++ b/samples/android/face-detection/src/org/opencv/samples/fd/FdView.java @@ -91,7 +91,7 @@ class FdView extends SampleCvViewBase { Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba, bmp)) + if (Utils.matToBitmap(mRgba, bmp)) return bmp; bmp.recycle(); diff --git a/samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java b/samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java index 9ee9ab469..d4f74cf8f 100644 --- a/samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java +++ b/samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java @@ -135,7 +135,7 @@ class ImageManipulationsView extends SampleCvViewBase { Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba, bmp)) + if (Utils.matToBitmap(mRgba, bmp)) return bmp; bmp.recycle(); diff --git a/samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java b/samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java index a1fd2f001..32aa63469 100644 --- a/samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java +++ b/samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java @@ -56,7 +56,7 @@ class Sample1View extends SampleViewBase { Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba, bmp)) + if (Utils.matToBitmap(mRgba, bmp)) return bmp; bmp.recycle(); diff --git a/samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java b/samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java index 15a0bc853..bbadc5ef3 100644 --- a/samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java +++ b/samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java @@ -54,7 +54,7 @@ class Sample2View extends SampleCvViewBase { Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba, bmp)) + if (Utils.matToBitmap(mRgba, bmp)) return bmp; bmp.recycle(); diff --git a/samples/android/tutorial-3-native/.project b/samples/android/tutorial-3-native/.project index e83271a32..6cf7ad3f2 100644 --- a/samples/android/tutorial-3-native/.project +++ b/samples/android/tutorial-3-native/.project @@ -25,6 +25,16 @@ + + org.eclipse.ui.externaltools.ExternalToolBuilder + auto,full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/Tutorial 2.1 Builder.launch + + + com.android.ide.eclipse.adt.AndroidNature diff --git a/samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java b/samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java index 9326dff12..94f421fd9 100644 --- a/samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java +++ b/samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java @@ -56,7 +56,7 @@ class Sample4View extends SampleViewBase { Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888); - if (Utils.MatToBitmap(mRgba, bmp)) + if (Utils.matToBitmap(mRgba, bmp)) return bmp; bmp.recycle();