Java API: corrected names of methods in Utils class; fixed bug in DMatch (thank for Hussein Abdinoor); added new utility method loadResource
This commit is contained in:
parent
13e392763b
commit
d9d74678a9
@ -26,7 +26,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner {
|
|||||||
|
|
||||||
private AndroidTestRunner androidTestRunner;
|
private AndroidTestRunner androidTestRunner;
|
||||||
private static String TAG = "opencv_test_java";
|
private static String TAG = "opencv_test_java";
|
||||||
|
|
||||||
public static String getTempFileName(String extension)
|
public static String getTempFileName(String extension)
|
||||||
{
|
{
|
||||||
File cache = context.getCacheDir();
|
File cache = context.getCacheDir();
|
||||||
@ -46,7 +46,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner {
|
|||||||
static public void Log(String message) {
|
static public void Log(String message) {
|
||||||
Log.e(TAG, message);
|
Log.e(TAG, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void Log(Mat m) {
|
static public void Log(Mat m) {
|
||||||
Log.e(TAG, m + "\n " + m.dump());
|
Log.e(TAG, m + "\n " + m.dump());
|
||||||
}
|
}
|
||||||
@ -54,12 +54,13 @@ public class OpenCVTestRunner extends InstrumentationTestRunner {
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
context = getContext();
|
context = getContext();
|
||||||
LENA_PATH = Utils.ExportResource(context, R.drawable.lena);
|
LENA_PATH = Utils.exportResource(context, R.drawable.lena);
|
||||||
CHESS_PATH = Utils.ExportResource(context, R.drawable.chessboard);
|
CHESS_PATH = Utils.exportResource(context, R.drawable.chessboard);
|
||||||
LBPCASCADE_FRONTALFACE_PATH = Utils.ExportResource(context, R.raw.lbpcascade_frontalface);
|
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<TestCase> testCases = androidTestRunner.getTestCases();
|
// List<TestCase> testCases = androidTestRunner.getTestCases();
|
||||||
// Collections.shuffle(testCases); //shuffle the tests order
|
// Collections.shuffle(testCases); //shuffle the tests order
|
||||||
@ -72,7 +73,7 @@ public class OpenCVTestRunner extends InstrumentationTestRunner {
|
|||||||
androidTestRunner = super.getAndroidTestRunner();
|
androidTestRunner = super.getAndroidTestRunner();
|
||||||
return androidTestRunner;
|
return androidTestRunner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getOutputFileName(String name)
|
public static String getOutputFileName(String name)
|
||||||
{
|
{
|
||||||
return context.getExternalFilesDir(null).getAbsolutePath() + File.separatorChar + name;
|
return context.getExternalFilesDir(null).getAbsolutePath() + File.separatorChar + name;
|
||||||
|
@ -16,6 +16,14 @@ public class UtilsTest extends OpenCVTestCase {
|
|||||||
fail("Not yet implemented");
|
fail("Not yet implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testLoadResourceContextInt() {
|
||||||
|
fail("Not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testLoadResourceContextIntInt() {
|
||||||
|
fail("Not yet implemented");
|
||||||
|
}
|
||||||
|
|
||||||
public void testMatToBitmap() {
|
public void testMatToBitmap() {
|
||||||
fail("Not yet implemented");
|
fail("Not yet implemented");
|
||||||
}
|
}
|
||||||
|
@ -1,62 +1,92 @@
|
|||||||
package org.opencv.android;
|
package org.opencv.android;
|
||||||
|
|
||||||
import org.opencv.core.CvException;
|
import android.content.Context;
|
||||||
import org.opencv.core.Mat;
|
import android.graphics.Bitmap;
|
||||||
|
|
||||||
import java.io.File;
|
import org.opencv.core.CvException;
|
||||||
import java.io.FileOutputStream;
|
import org.opencv.core.CvType;
|
||||||
import java.io.IOException;
|
import org.opencv.core.Mat;
|
||||||
import java.io.InputStream;
|
import org.opencv.highgui.Highgui;
|
||||||
|
|
||||||
import android.content.Context;
|
import java.io.ByteArrayOutputStream;
|
||||||
import android.graphics.Bitmap;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
public class Utils {
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
public static String ExportResource(Context context, int resourceId) {
|
|
||||||
return ExportResource(context, resourceId, "OpenCV_data");
|
public class Utils {
|
||||||
}
|
|
||||||
|
public static String exportResource(Context context, int resourceId) {
|
||||||
public static String ExportResource(Context context, int resourceId, String dirname) {
|
return exportResource(context, resourceId, "OpenCV_data");
|
||||||
String fullname = context.getResources().getString(resourceId);
|
}
|
||||||
String resName = fullname.substring(fullname.lastIndexOf("/") + 1);
|
|
||||||
try {
|
public static String exportResource(Context context, int resourceId, String dirname) {
|
||||||
InputStream is = context.getResources().openRawResource(resourceId);
|
String fullname = context.getResources().getString(resourceId);
|
||||||
File resDir = context.getDir(dirname, Context.MODE_PRIVATE);
|
String resName = fullname.substring(fullname.lastIndexOf("/") + 1);
|
||||||
File resFile = new File(resDir, resName);
|
try {
|
||||||
|
InputStream is = context.getResources().openRawResource(resourceId);
|
||||||
FileOutputStream os = new FileOutputStream(resFile);
|
File resDir = context.getDir(dirname, Context.MODE_PRIVATE);
|
||||||
|
File resFile = new File(resDir, resName);
|
||||||
byte[] buffer = new byte[4096];
|
|
||||||
int bytesRead;
|
FileOutputStream os = new FileOutputStream(resFile);
|
||||||
while ((bytesRead = is.read(buffer)) != -1) {
|
|
||||||
os.write(buffer, 0, bytesRead);
|
byte[] buffer = new byte[4096];
|
||||||
}
|
int bytesRead;
|
||||||
is.close();
|
while ((bytesRead = is.read(buffer)) != -1) {
|
||||||
os.close();
|
os.write(buffer, 0, bytesRead);
|
||||||
|
}
|
||||||
return resFile.getAbsolutePath();
|
is.close();
|
||||||
} catch (IOException e) {
|
os.close();
|
||||||
e.printStackTrace();
|
|
||||||
throw new CvException("Failed to export resource " + resName
|
return resFile.getAbsolutePath();
|
||||||
+ ". Exception thrown: " + e);
|
} 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 Mat loadResource(Context context, int resourceId) throws IOException
|
||||||
public static boolean MatToBitmap(Mat m, Bitmap b) {
|
{
|
||||||
return nMatToBitmap(m.nativeObj, b);
|
return loadResource(context, resourceId, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// native stuff
|
public static Mat loadResource(Context context, int resourceId, int flags) throws IOException
|
||||||
static {
|
{
|
||||||
System.loadLibrary("opencv_java");
|
InputStream is = context.getResources().openRawResource(resourceId);
|
||||||
}
|
ByteArrayOutputStream os = new ByteArrayOutputStream(is.available());
|
||||||
|
|
||||||
private static native long nBitmapToMat(Bitmap b);
|
byte[] buffer = new byte[4096];
|
||||||
|
int bytesRead;
|
||||||
private static native boolean nMatToBitmap(long m, Bitmap b);
|
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);
|
||||||
|
}
|
||||||
|
@ -48,7 +48,7 @@ public class DMatch {
|
|||||||
/**
|
/**
|
||||||
* less is better
|
* less is better
|
||||||
*/
|
*/
|
||||||
boolean lessThan(DMatch it) {
|
public boolean lessThan(DMatch it) {
|
||||||
return distance < it.distance;
|
return distance < it.distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
|
|||||||
drawGrid(cols, rows);
|
drawGrid(cols, rows);
|
||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(cols, rows, Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(cols, rows, Bitmap.Config.ARGB_8888);
|
||||||
if (Utils.MatToBitmap(mRgba15, bmp))
|
if (Utils.matToBitmap(mRgba15, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -91,7 +91,7 @@ class FdView extends SampleCvViewBase {
|
|||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
||||||
|
|
||||||
if (Utils.MatToBitmap(mRgba, bmp))
|
if (Utils.matToBitmap(mRgba, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -135,7 +135,7 @@ class ImageManipulationsView extends SampleCvViewBase {
|
|||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
||||||
|
|
||||||
if (Utils.MatToBitmap(mRgba, bmp))
|
if (Utils.matToBitmap(mRgba, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -56,7 +56,7 @@ class Sample1View extends SampleViewBase {
|
|||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888);
|
||||||
|
|
||||||
if (Utils.MatToBitmap(mRgba, bmp))
|
if (Utils.matToBitmap(mRgba, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -54,7 +54,7 @@ class Sample2View extends SampleCvViewBase {
|
|||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
|
||||||
|
|
||||||
if (Utils.MatToBitmap(mRgba, bmp))
|
if (Utils.matToBitmap(mRgba, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -25,6 +25,16 @@
|
|||||||
<arguments>
|
<arguments>
|
||||||
</arguments>
|
</arguments>
|
||||||
</buildCommand>
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
|
||||||
|
<triggers>auto,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>LaunchConfigHandle</key>
|
||||||
|
<value><project>/.externalToolBuilders/Tutorial 2.1 Builder.launch</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
</buildSpec>
|
</buildSpec>
|
||||||
<natures>
|
<natures>
|
||||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
@ -56,7 +56,7 @@ class Sample4View extends SampleViewBase {
|
|||||||
|
|
||||||
Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888);
|
Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888);
|
||||||
|
|
||||||
if (Utils.MatToBitmap(mRgba, bmp))
|
if (Utils.matToBitmap(mRgba, bmp))
|
||||||
return bmp;
|
return bmp;
|
||||||
|
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
Loading…
Reference in New Issue
Block a user