import java.util.*; import java.util.zip.*; import java.util.List; import java.util.regex.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.table.*; import java.io.*; import java.net.*; import java.lang.reflect.*; import java.lang.ref.*; import java.lang.management.*; import java.security.*; import java.security.spec.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.imageio.*; import java.math.*; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; public class main { static File pathToOpenCV = userDir("dev/opencv-2.4.9_"); public static void main(String[] args) throws Exception { print("Welcome to OpenCV " + Core.VERSION); String libPath = System.getProperty("java.library.path"); //libPath = new File(pathToOpenCV, "lib").getAbsolutePath() + File.pathSeparator + libPath; print(libPath); //System.setProperty("java.library.path", libPath); // fails!? //System.loadLibrary(Core.NATIVE_LIBRARY_NAME); File lib = new File(pathToOpenCV, "lib/lib" + Core.NATIVE_LIBRARY_NAME + ".so"); print("Looking for: " + lib.getAbsolutePath()); Runtime.getRuntime().load(lib.getAbsolutePath()); // TEST Mat m = Mat.eye(3, 3, CvType.CV_8UC1); print("m = " + m.dump()); } static volatile StringBuffer local_log = new StringBuffer(); // not redirected static volatile StringBuffer print_log = local_log; // might be redirected, e.g. to main bot // in bytes - will cut to half that static volatile int print_log_max = 1024*1024; static volatile int local_log_max = 100*1024; static void print() { print(""); } // slightly overblown signature to return original object... static A print(A o) { String s = String.valueOf(o) + "\n"; StringBuffer loc = local_log; StringBuffer buf = print_log; int loc_max = print_log_max; if (buf != loc && buf != null) { print_append(buf, s, print_log_max); loc_max = local_log_max; } if (loc != null) print_append(loc, s, loc_max); System.out.print(s); return o; } static void print(long l) { print(String.valueOf(l)); } static void print(char c) { print(String.valueOf(c)); } static void print_append(StringBuffer buf, String s, int max) { synchronized(buf) { buf.append(s); max /= 2; if (buf.length() > max) try { int newLength = max/2; int ofs = buf.length()-newLength; String newString = buf.substring(ofs); buf.setLength(0); buf.append("[...] ").append(newString); } catch (Exception e) { buf.setLength(0); } } } static File userDir() { return new File(userHome()); } static File userDir(String path) { return new File(userHome(), path); } static String _userHome; static String userHome() { if (_userHome == null) { if (isAndroid()) _userHome = "/storage/sdcard0/"; else _userHome = System.getProperty("user.home"); //System.out.println("userHome: " + _userHome); } return _userHome; } static File userHome(String path) { return new File(userDir(), path); } static boolean isAndroid() { return System.getProperty("java.vendor").toLowerCase().indexOf("android") >= 0; } }