diff --git a/webcam-capture-drivers/driver-javacv/.classpath b/webcam-capture-drivers/driver-javacv/.classpath
index c9464c0f..c2ce1e7b 100644
--- a/webcam-capture-drivers/driver-javacv/.classpath
+++ b/webcam-capture-drivers/driver-javacv/.classpath
@@ -1,26 +1,27 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webcam-capture-drivers/driver-javacv/pom.xml b/webcam-capture-drivers/driver-javacv/pom.xml
index 2d618dc7..0b8cb586 100644
--- a/webcam-capture-drivers/driver-javacv/pom.xml
+++ b/webcam-capture-drivers/driver-javacv/pom.xml
@@ -12,23 +12,8 @@
jar
Webcam Capture - JavaCV Driver
- Webcam Capture driver using JavaCV - Java binding for OpenCV framework
+ Webcam Capture driver using JavaCV binding for OpenCV
-
- 0.2
-
-
-
-
- javacv
- http://maven2.javacv.googlecode.com/git
-
-
- kevoree
- http://maven.kevoree.org/release
-
-
-
com.github.sarxos
@@ -36,51 +21,9 @@
${project.version}
- com.googlecode.javacv
- javacv
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- windows-x86
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- windows-x86_64
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- linux-arm
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- linux-x86
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- linux-x86_64
- ${javacv.version}
-
-
- com.googlecode.javacv
- javacv
- macosx-x86_64
- ${javacv.version}
-
-
- com.googlecode.javacv
+ org.bytedeco
javacv
- android-arm
- ${javacv.version}
+ 0.8
@@ -93,9 +36,6 @@
org.apache.maven.plugins
maven-deploy-plugin
-
- true
-
diff --git a/webcam-capture-drivers/driver-javacv/src/example/java/JavaCvDriverExample.java b/webcam-capture-drivers/driver-javacv/src/example/java/JavaCvDriverExample.java
new file mode 100644
index 00000000..d73a35fb
--- /dev/null
+++ b/webcam-capture-drivers/driver-javacv/src/example/java/JavaCvDriverExample.java
@@ -0,0 +1,21 @@
+import javax.swing.JFrame;
+
+import com.github.sarxos.webcam.Webcam;
+import com.github.sarxos.webcam.WebcamPanel;
+import com.github.sarxos.webcam.ds.javacv.JavaCvDriver;
+
+
+public class JavaCvDriverExample {
+
+ static {
+ Webcam.setDriver(new JavaCvDriver());
+ }
+
+ public static void main(String[] args) {
+ JFrame frame = new JFrame("LTI-CIVIL Webcam Capture Driver Example");
+ frame.add(new WebcamPanel(Webcam.getDefault()));
+ frame.pack();
+ frame.setVisible(true);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ }
+}
diff --git a/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDevice.java b/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDevice.java
index e0bacb3e..2d4e94b9 100644
--- a/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDevice.java
+++ b/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDevice.java
@@ -2,12 +2,15 @@
import java.awt.Dimension;
import java.awt.image.BufferedImage;
+import java.io.File;
+
+import org.bytedeco.javacpp.videoInputLib.videoInput;
+import org.bytedeco.javacv.FrameGrabber;
import com.github.sarxos.webcam.WebcamDevice;
import com.github.sarxos.webcam.WebcamException;
-import com.googlecode.javacv.FrameGrabber;
-import com.googlecode.javacv.FrameGrabber.Exception;
-import com.googlecode.javacv.cpp.videoInputLib.videoInput;
+import com.github.sarxos.webcam.WebcamResolution;
+import com.github.sarxos.webcam.util.OsUtils;
/**
@@ -18,6 +21,8 @@
public class JavaCvDevice implements WebcamDevice {
private int address = -1;
+ private File vfile = null;
+
private String name = null;
private FrameGrabber grabber = null;
@@ -28,22 +33,37 @@ public JavaCvDevice(int address) {
this.address = address;
}
+ public JavaCvDevice(File vfile) {
+ this.vfile = vfile;
+ }
+
@Override
public String getName() {
if (name == null) {
- name = videoInput.getDeviceName(address);
+ switch (OsUtils.getOS()) {
+ case WIN:
+ name = videoInput.getDeviceName(address).getString();
+ break;
+ case NIX:
+ name = vfile.getAbsolutePath();
+ break;
+ case OSX:
+ throw new UnsupportedOperationException("Mac OS is not supported");
+ }
}
return name;
}
@Override
public Dimension[] getResolutions() {
+ // grabber.get
+
throw new WebcamException("Not implemented");
}
@Override
public Dimension getResolution() {
- throw new WebcamException("Not implemented");
+ return WebcamResolution.VGA.getSize();
}
@Override
@@ -65,6 +85,22 @@ public BufferedImage getImage() {
}
}
+ private FrameGrabber buildGrabber() throws FrameGrabber.Exception {
+ switch (OsUtils.getOS()) {
+ case WIN:
+ return FrameGrabber.createDefault(address);
+ case NIX:
+ return FrameGrabber.createDefault(vfile);
+ case OSX:
+ default:
+ throw new UnsupportedOperationException("Current OS is not supported");
+ }
+ }
+
+ public FrameGrabber getGrabber() {
+ return grabber;
+ }
+
@Override
public void open() {
@@ -72,15 +108,14 @@ public void open() {
return;
}
- // CvCapture capture =
- // opencv_highgui.cvCreateCameraCapture(opencv_highgui.CV_CAP_DSHOW);
- // IplImage image = opencv_highgui.cvQueryFrame(capture);
-
try {
- grabber = FrameGrabber.createDefault(address);
+
+ grabber = buildGrabber();
grabber.start();
+
open = true;
- } catch (com.googlecode.javacv.FrameGrabber.Exception e) {
+
+ } catch (FrameGrabber.Exception e) {
release();
throw new WebcamException(e);
}
@@ -90,7 +125,7 @@ private void release() {
if (grabber != null) {
try {
grabber.release();
- } catch (com.googlecode.javacv.FrameGrabber.Exception e) {
+ } catch (FrameGrabber.Exception e) {
throw new WebcamException(e);
}
}
@@ -105,7 +140,7 @@ public void close() {
try {
grabber.stop();
- } catch (com.googlecode.javacv.FrameGrabber.Exception e) {
+ } catch (FrameGrabber.Exception e) {
throw new WebcamException(e);
} finally {
dispose();
@@ -121,4 +156,9 @@ public void dispose() {
public boolean isOpen() {
return open;
}
+
+ @Override
+ public String toString() {
+ return getClass().getName() + "#address=" + address + "#vfile=" + vfile;
+ }
}
diff --git a/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDriver.java b/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDriver.java
index f015feea..965d2567 100644
--- a/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDriver.java
+++ b/webcam-capture-drivers/driver-javacv/src/main/java/com/github/sarxos/webcam/ds/javacv/JavaCvDriver.java
@@ -1,12 +1,15 @@
package com.github.sarxos.webcam.ds.javacv;
+import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.bytedeco.javacpp.videoInputLib.videoInput;
+
import com.github.sarxos.webcam.WebcamDevice;
import com.github.sarxos.webcam.WebcamDriver;
-import com.googlecode.javacv.cpp.videoInputLib.videoInput;
+import com.github.sarxos.webcam.util.NixVideoDevUtils;
/**
@@ -21,34 +24,41 @@
*/
public class JavaCvDriver implements WebcamDriver {
- private static List devices = null;
-
- @Override
- public List getDevices() {
- if (devices == null) {
- devices = new ArrayList();
- int n = videoInput.listDevices();
- if (n > 0) {
- for (int i = 0; i < n; i++) {
- devices.add(new JavaCvDevice(i));
- }
- } else {
- devices = Collections.emptyList();
+ private List getDevicesWindows() {
+ List devices = new ArrayList();
+ int n = videoInput.listDevices();
+ if (n > 0) {
+ for (int i = 0; i < n; i++) {
+ devices.add(new JavaCvDevice(i));
}
+ } else {
+ devices = Collections.emptyList();
}
return devices;
}
- public static void main(String[] args) {
- new JavaCvDriver().getDevices();
+ private List getDevicesLinux() {
+ List devices = new ArrayList();
+ for (File vfile : NixVideoDevUtils.getVideoFiles()) {
+ devices.add(new JavaCvDevice(vfile));
+ }
+ return devices;
+ }
- int n = videoInput.listDevices();
- if (n > 0) {
- for (int i = 0; i < n; i++) {
- System.out.println(videoInput.getDeviceName(i));
- }
+ @Override
+ public List getDevices() {
+ boolean linux = System.getProperty("os.name").toLowerCase().indexOf("linux") != -1;
+ if (linux) {
+ return getDevicesLinux();
+ } else {
+ return getDevicesWindows();
}
+ }
+ public static void main(String[] args) {
+ for (WebcamDevice d : new JavaCvDriver().getDevices()) {
+ System.out.println(d);
+ }
}
@Override
diff --git a/webcam-capture-drivers/driver-lti-civil/src/example/resources/logback.xml b/webcam-capture-drivers/driver-lti-civil/src/example/resources/logback.xml
new file mode 100644
index 00000000..2bb01a64
--- /dev/null
+++ b/webcam-capture-drivers/driver-lti-civil/src/example/resources/logback.xml
@@ -0,0 +1,10 @@
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+