import android.test.InstrumentationTestRunner;
import android.util.Log;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import org.opencv.Android;
/**
* This only class is Android specific. The original idea about test order
public static String LENA_PATH;
public static String CHESS_PATH;
public static String LBPCASCADE_FRONTALFACE_PATH;
+ public static Context context;
private AndroidTestRunner androidTestRunner;
private static String TAG = "opencv_test_java";
@Override
public void onStart() {
- LENA_PATH = ExportResource(R.drawable.lena);
- CHESS_PATH = ExportResource(R.drawable.chessboard);
- LBPCASCADE_FRONTALFACE_PATH = ExportResource(R.raw.lbpcascade_frontalface);
+ context = getContext();
+ LENA_PATH = Android.ExportResource(context, R.drawable.lena);
+ CHESS_PATH = Android.ExportResource(context, R.drawable.chessboard);
+ LBPCASCADE_FRONTALFACE_PATH = Android.ExportResource(context, R.raw.lbpcascade_frontalface);
// List<TestCase> testCases = androidTestRunner.getTestCases();
// Collections.shuffle(testCases); //shuffle the tests order
androidTestRunner = super.getAndroidTestRunner();
return androidTestRunner;
}
-
- private String ExportResource(int resourceId) {
- String fullname = getContext().getResources().getString(resourceId);
- String resName = fullname.substring(fullname.lastIndexOf("/") + 1);
- try {
- InputStream is = getContext().getResources().openRawResource(
- resourceId);
- File resDir = getContext().getDir("testdata", 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();
- Log("Failed to export resource " + resName + ". Exception thrown: "
- + e);
- }
- return null;
- }
}
#if 0\r
CV_WRAP void detect( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;\r
CV_WRAP void detect( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints, const vector<Mat>& masks=vector<Mat>() ) const;\r
- CV_WRAP virtual void read( const FileNode& );\r
- CV_WRAP virtual void write( FileStorage& ) const;\r
CV_WRAP virtual bool empty() const;\r
#endif\r
\r
- //supported: FAST STAR SIFT SURF ORB MSER GFTT HARRIS Grid(XXXX) Pyramid(XXXX) Dynamic(XXXX)\r
- //not supported: SimpleBlob, Dense\r
- CV_WRAP_AS(create) static javaFeatureDetector* jcreate( const string& detectorType )\r
- {\r
- Ptr<FeatureDetector> detector = FeatureDetector::create(detectorType);\r
- detector.addref();\r
- return (javaFeatureDetector*)((FeatureDetector*) detector);\r
- }\r
+ //supported: FAST STAR SIFT SURF ORB MSER GFTT HARRIS Grid(XXXX) Pyramid(XXXX) Dynamic(XXXX)\r
+ //not supported: SimpleBlob, Dense\r
+ CV_WRAP_AS(create) static javaFeatureDetector* jcreate( const string& detectorType )\r
+ {\r
+ Ptr<FeatureDetector> detector = FeatureDetector::create(detectorType);\r
+ detector.addref();\r
+ return (javaFeatureDetector*)((FeatureDetector*) detector);\r
+ }\r
+\r
+ CV_WRAP void write( const string& fileName ) const\r
+ {\r
+ FileStorage fs(fileName, FileStorage::WRITE);\r
+ ((FeatureDetector*)this)->write(fs);\r
+ fs.release();\r
+ }\r
+\r
+ CV_WRAP void read( const string& fileName )\r
+ {\r
+ FileStorage fs(fileName, FileStorage::READ);\r
+ ((FeatureDetector*)this)->read(fs.root());\r
+ fs.release();\r
+ }\r
};\r
\r
class CV_EXPORTS_AS(DescriptorMatcher) javaDescriptorMatcher : public DescriptorMatcher\r
public:\r
#if 0\r
CV_WRAP virtual bool isMaskSupported() const;\r
- CV_WRAP virtual void add( const vector<Mat>& descriptors );\r
- CV_WRAP const vector<Mat>& getTrainDescriptors() const;\r
- CV_WRAP virtual void clear();\r
- CV_WRAP virtual bool empty() const;\r
- CV_WRAP virtual void train();\r
- CV_WRAP void match( const Mat& queryDescriptors, const Mat& trainDescriptors,\r
+ CV_WRAP virtual void add( const vector<Mat>& descriptors );\r
+ CV_WRAP const vector<Mat>& getTrainDescriptors() const;\r
+ CV_WRAP virtual void clear();\r
+ CV_WRAP virtual bool empty() const;\r
+ CV_WRAP virtual void train();\r
+ CV_WRAP void match( const Mat& queryDescriptors, const Mat& trainDescriptors,\r
vector<DMatch>& matches, const Mat& mask=Mat() ) const;\r
- CV_WRAP void knnMatch( const Mat& queryDescriptors, const Mat& trainDescriptors,\r
+ CV_WRAP void knnMatch( const Mat& queryDescriptors, const Mat& trainDescriptors,\r
vector<vector<DMatch> >& matches, int k,\r
const Mat& mask=Mat(), bool compactResult=false ) const;\r
CV_WRAP void radiusMatch( const Mat& queryDescriptors, const Mat& trainDescriptors,\r
const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );\r
CV_WRAP void radiusMatch( const Mat& queryDescriptors, vector<vector<DMatch> >& matches, float maxDistance,\r
const vector<Mat>& masks=vector<Mat>(), bool compactResult=false );\r
- CV_WRAP virtual void read( const FileNode& );\r
- // Writes matcher object to a file storage\r
- CV_WRAP virtual void write( FileStorage& ) const;\r
#endif\r
\r
CV_WRAP_AS(clone) javaDescriptorMatcher* jclone( bool emptyTrainData=false ) const\r
- {\r
- Ptr<DescriptorMatcher> matcher = this->clone(emptyTrainData);\r
- matcher.addref();\r
- return (javaDescriptorMatcher*)((DescriptorMatcher*) matcher);\r
- }\r
- \r
- //supported: FlannBased, BruteForce, BruteForce-L1, BruteForce-Hamming, BruteForce-HammingLUT\r
- CV_WRAP_AS(create) static javaDescriptorMatcher* jcreate( const string& descriptorMatcherType )\r
- {\r
- Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create(descriptorMatcherType);\r
- matcher.addref();\r
- return (javaDescriptorMatcher*)((DescriptorMatcher*) matcher);\r
- }\r
+ {\r
+ Ptr<DescriptorMatcher> matcher = this->clone(emptyTrainData);\r
+ matcher.addref();\r
+ return (javaDescriptorMatcher*)((DescriptorMatcher*) matcher);\r
+ }\r
+ \r
+ //supported: FlannBased, BruteForce, BruteForce-L1, BruteForce-Hamming, BruteForce-HammingLUT\r
+ CV_WRAP_AS(create) static javaDescriptorMatcher* jcreate( const string& descriptorMatcherType )\r
+ {\r
+ Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create(descriptorMatcherType);\r
+ matcher.addref();\r
+ return (javaDescriptorMatcher*)((DescriptorMatcher*) matcher);\r
+ }\r
+\r
+ CV_WRAP void write( const string& fileName ) const\r
+ {\r
+ FileStorage fs(fileName, FileStorage::WRITE);\r
+ ((DescriptorMatcher*)this)->write(fs);\r
+ fs.release();\r
+ }\r
+\r
+ CV_WRAP void read( const string& fileName )\r
+ {\r
+ FileStorage fs(fileName, FileStorage::READ);\r
+ ((DescriptorMatcher*)this)->read(fs.root());\r
+ fs.release();\r
+ }\r
};\r
\r
class CV_EXPORTS_AS(DescriptorExtractor) javaDescriptorExtractor : public DescriptorExtractor\r
#if 0\r
CV_WRAP void compute( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;\r
CV_WRAP void compute( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints, vector<Mat>& descriptors ) const;\r
- CV_WRAP virtual void read( const FileNode& );\r
- CV_WRAP virtual void write( FileStorage& ) const;\r
CV_WRAP virtual int descriptorSize() const = 0;\r
CV_WRAP virtual int descriptorType() const = 0;\r
\r
#endif\r
\r
//supported SIFT, SURF, ORB, BRIEF, Opponent(XXXX)\r
- //not supported: Calonder\r
- CV_WRAP_AS(create) static javaDescriptorExtractor* jcreate( const string& descriptorExtractorType )\r
- {\r
- Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create(descriptorExtractorType);\r
- extractor.addref();\r
- return (javaDescriptorExtractor*)((DescriptorExtractor*) extractor);\r
- }\r
+ //not supported: Calonder\r
+ CV_WRAP_AS(create) static javaDescriptorExtractor* jcreate( const string& descriptorExtractorType )\r
+ {\r
+ Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create(descriptorExtractorType);\r
+ extractor.addref();\r
+ return (javaDescriptorExtractor*)((DescriptorExtractor*) extractor);\r
+ }\r
+\r
+ CV_WRAP void write( const string& fileName ) const\r
+ {\r
+ FileStorage fs(fileName, FileStorage::WRITE);\r
+ ((DescriptorExtractor*)this)->write(fs);\r
+ fs.release();\r
+ }\r
+\r
+ CV_WRAP void read( const string& fileName )\r
+ {\r
+ FileStorage fs(fileName, FileStorage::READ);\r
+ ((DescriptorExtractor*)this)->read(fs.root());\r
+ fs.release();\r
+ }\r
};\r
\r
#if 0\r
const vector<vector<DMatch> >& matches1to2, Mat& outImg,\r
const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1),\r
const vector<vector<char> >& matchesMask=vector<vector<char> >(), int flags=0);\r
- \r
+ \r
#endif\r
\r
} //cv\r
\r
-#endif // __OPENCV_FEATURES_2D_MANUAL_HPP__
\ No newline at end of file
+#endif // __OPENCV_FEATURES_2D_MANUAL_HPP__\r
-package org.opencv;\r
-\r
-import org.opencv.core.Mat;\r
-import android.graphics.Bitmap;\r
-\r
-public class Android {\r
-\r
- public static Mat BitmapToMat(Bitmap b) {\r
- return new Mat( nBitmapToMat(b) );\r
- }\r
- \r
- public static boolean MatToBitmap(Mat m, Bitmap b) {\r
- return nMatToBitmap(m.nativeObj, b); \r
- }\r
-\r
- // native stuff\r
- static { System.loadLibrary("opencv_java"); }\r
- private static native long nBitmapToMat(Bitmap b);\r
- private static native boolean nMatToBitmap(long m, Bitmap b);\r
-}\r
+package org.opencv;
+
+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 Android {
+
+ 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);
+}