Java API: corrected names of methods in Utils class; fixed bug in DMatch (thank for Hussein Abdinoor); added new utility method loadResource
parent
13e392763b
commit
d9d74678a9
11 changed files with 125 additions and 76 deletions
@ -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); |
||||||
|
} |
||||||
|
Loading…
Reference in new issue