Skip to content

Commit 6752f8a

Browse files
committed
Update README.md file and samples for after modularization
1 parent dd8fc3f commit 6752f8a

33 files changed

+379
-368
lines changed

.gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
/target/
2-
/platform/target/
1+
**/target/**
32

43
# Mac
54
.DS_Store

README.md

+24-18
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ To use JavaCV, you will first need to download and install the following softwar
6969
Further, although not always required, some functionality of JavaCV also relies on:
7070

7171
* CL Eye Platform SDK (Windows only) http://codelaboratories.com/downloads/
72-
* Android SDK API 14 or newer http://developer.android.com/sdk/
72+
* Android SDK API 21 or newer http://developer.android.com/sdk/
7373
* JOCL and JOGL from JogAmp http://jogamp.org/
7474

7575
Finally, please make sure everything has the same bitness: **32-bit and 64-bit modules do not mix under any circumstances**.
@@ -89,7 +89,7 @@ Eclipse (Java SE 7 or newer):
8989
1. Navigate to Project > Properties > Java Build Path > Libraries and click "Add External JARs...".
9090
2. Locate the JAR files, select them, and click OK.
9191

92-
IntelliJ IDEA (Android 4.0 or newer):
92+
IntelliJ IDEA (Android 5.0 or newer):
9393

9494
1. Follow the instructions on this page: http://developer.android.com/training/basics/firstapp/
9595
2. Copy all the JAR files into the `app/libs` subdirectory.
@@ -107,9 +107,11 @@ Sample Usage
107107
The class definitions are basically ports to Java of the original header files in C/C++, and I deliberately decided to keep as much of the original syntax as possible. For example, here is a method that tries to load an image file, smooth it, and save it back to disk:
108108

109109
```java
110-
import static org.bytedeco.javacpp.opencv_core.*;
111-
import static org.bytedeco.javacpp.opencv_imgproc.*;
112-
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
110+
import org.bytedeco.opencv.opencv_core.*;
111+
import org.bytedeco.opencv.opencv_imgproc.*;
112+
import static org.bytedeco.opencv.global.opencv_core.*;
113+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
114+
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
113115

114116
public class Smoother {
115117
public static void smooth(String filename) {
@@ -130,10 +132,14 @@ import java.net.URL;
130132
import org.bytedeco.javacv.*;
131133
import org.bytedeco.javacpp.*;
132134
import org.bytedeco.javacpp.indexer.*;
133-
import static org.bytedeco.javacpp.opencv_core.*;
134-
import static org.bytedeco.javacpp.opencv_imgproc.*;
135-
import static org.bytedeco.javacpp.opencv_calib3d.*;
136-
import static org.bytedeco.javacpp.opencv_objdetect.*;
135+
import org.bytedeco.opencv.opencv_core.*;
136+
import org.bytedeco.opencv.opencv_imgproc.*;
137+
import org.bytedeco.opencv.opencv_calib3d.*;
138+
import org.bytedeco.opencv.opencv_objdetect.*;
139+
import static org.bytedeco.opencv.global.opencv_core.*;
140+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
141+
import static org.bytedeco.opencv.global.opencv_calib3d.*;
142+
import static org.bytedeco.opencv.global.opencv_objdetect.*;
137143

138144
public class Demo {
139145
public static void main(String[] args) throws Exception {
@@ -146,9 +152,6 @@ public class Demo {
146152
classifierName = file.getAbsolutePath();
147153
}
148154

149-
// Preload the opencv_objdetect module to work around a known bug.
150-
Loader.load(opencv_objdetect.class);
151-
152155
// We can "cast" Pointer objects by instantiating a new object of the desired class.
153156
CascadeClassifier classifier = new CascadeClassifier(classifierName);
154157
if (classifier == null) {
@@ -157,7 +160,7 @@ public class Demo {
157160
}
158161

159162
// The available FrameGrabber classes include OpenCVFrameGrabber (opencv_videoio),
160-
// DC1394FrameGrabber, FlyCaptureFrameGrabber, OpenKinectFrameGrabber, OpenKinect2FrameGrabber,
163+
// DC1394FrameGrabber, FlyCapture2FrameGrabber, OpenKinectFrameGrabber, OpenKinect2FrameGrabber,
161164
// RealSenseFrameGrabber, PS3EyeFrameGrabber, VideoInputFrameGrabber, and FFmpegFrameGrabber.
162165
FrameGrabber grabber = FrameGrabber.createDefault(0);
163166
grabber.start();
@@ -264,7 +267,7 @@ Furthermore, after creating a `pom.xml` file with the following content:
264267
<modelVersion>4.0.0</modelVersion>
265268
<groupId>org.bytedeco.javacv</groupId>
266269
<artifactId>demo</artifactId>
267-
<version>1.4.4</version>
270+
<version>1.5-SNAPSHOT</version>
268271
<properties>
269272
<maven.compiler.source>1.7</maven.compiler.source>
270273
<maven.compiler.target>1.7</maven.compiler.target>
@@ -273,13 +276,16 @@ Furthermore, after creating a `pom.xml` file with the following content:
273276
<dependency>
274277
<groupId>org.bytedeco</groupId>
275278
<artifactId>javacv-platform</artifactId>
276-
<version>1.4.4</version>
279+
<version>1.5-SNAPSHOT</version>
277280
</dependency>
278281
</dependencies>
282+
<build>
283+
<sourceDirectory>.</sourceDirectory>
284+
</build>
279285
</project>
280286
```
281287

282-
And by placing the source code above in `src/main/java/Demo.java`, we can use the following command to have everything first installed automatically and then executed by Maven:
288+
And by placing the source code above in `Demo.java`, or similarly for other classes found in the [`samples`](samples), we can use the following command to have everything first installed automatically and then executed by Maven:
283289
```bash
284290
$ mvn compile exec:java -Dexec.mainClass=Demo
285291
```
@@ -291,8 +297,8 @@ Build Instructions
291297
If the binary files available above are not enough for your needs, you might need to rebuild them from the source code. To this end, the project files were created for:
292298

293299
* Maven 3.x http://maven.apache.org/download.html
294-
* JavaCPP 1.4.4 https://github.com/bytedeco/javacpp
295-
* JavaCPP Presets 1.4.4 https://github.com/bytedeco/javacpp-presets
300+
* JavaCPP 1.5 https://github.com/bytedeco/javacpp
301+
* JavaCPP Presets 1.5 https://github.com/bytedeco/javacpp-presets
296302

297303
Once installed, simply call the usual `mvn install` command for JavaCPP, its Presets, and JavaCV. By default, no other dependencies than a C++ compiler for JavaCPP are required. Please refer to the comments inside the `pom.xml` files for further details.
298304

samples/BioInspiredRetina.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
package net.betzel.bytedeco.javacv.bioinspired;
1+
import java.awt.*;
2+
import java.awt.image.BufferedImage;
3+
import java.io.File;
4+
import javax.imageio.ImageIO;
25

36
import org.bytedeco.javacpp.tools.Slf4jLogger;
47
import org.bytedeco.javacv.CanvasFrame;
58
import org.bytedeco.javacv.Java2DFrameConverter;
69
import org.bytedeco.javacv.OpenCVFrameConverter;
710

8-
import javax.imageio.ImageIO;
9-
import java.awt.*;
10-
import java.awt.image.BufferedImage;
11-
import java.io.File;
12-
13-
import static org.bytedeco.javacpp.opencv_core.*;
14-
import static org.bytedeco.javacpp.opencv_imgproc.*;
15-
import static org.bytedeco.javacpp.opencv_bioinspired.*;
11+
import org.bytedeco.opencv.opencv_core.*;
12+
import org.bytedeco.opencv.opencv_imgproc.*;
13+
import org.bytedeco.opencv.opencv_bioinspired.*;
14+
import static org.bytedeco.opencv.global.opencv_core.*;
15+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
16+
import static org.bytedeco.opencv.global.opencv_bioinspired.*;
1617

1718

1819
/**

samples/BlobDemo.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
import org.bytedeco.javacv.CanvasFrame;
33
import org.bytedeco.javacv.OpenCVFrameConverter;
44

5-
import static org.bytedeco.javacpp.opencv_core.*;
6-
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
7-
import static org.bytedeco.javacpp.opencv_imgproc.*;
5+
import org.bytedeco.opencv.opencv_core.*;
6+
import org.bytedeco.opencv.opencv_imgproc.*;
7+
import static org.bytedeco.opencv.global.opencv_core.*;
8+
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
9+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
810

911
///////////////////////////////////////////////////////////////////
1012
//* *//

samples/CaffeGooglenet.java

+7-10
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,20 @@
55
* Paolo Bolettieri <[email protected]>
66
*/
77

8-
import static org.bytedeco.javacpp.opencv_core.minMaxLoc;
9-
import static org.bytedeco.javacpp.opencv_dnn.blobFromImage;
10-
import static org.bytedeco.javacpp.opencv_dnn.readNetFromCaffe;
11-
import static org.bytedeco.javacpp.opencv_imgcodecs.imread;
12-
import static org.bytedeco.javacpp.opencv_imgproc.resize;
13-
148
import java.io.BufferedReader;
159
import java.io.File;
1610
import java.io.FileReader;
1711
import java.io.IOException;
1812
import java.util.ArrayList;
1913
import java.util.List;
2014

21-
import org.bytedeco.javacpp.opencv_core.Mat;
22-
import org.bytedeco.javacpp.opencv_core.Point;
23-
import org.bytedeco.javacpp.opencv_core.Size;
24-
import org.bytedeco.javacpp.opencv_dnn.Net;
15+
import org.bytedeco.opencv.opencv_core.*;
16+
import org.bytedeco.opencv.opencv_dnn.*;
17+
import org.bytedeco.opencv.opencv_imgproc.*;
18+
import static org.bytedeco.opencv.global.opencv_core.*;
19+
import static org.bytedeco.opencv.global.opencv_dnn.*;
20+
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
21+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
2522

2623
public class CaffeGooglenet {
2724

samples/ColoredObjectTrack.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.bytedeco.javacv.Java2DFrameConverter;
1515
import org.bytedeco.javacv.OpenCVFrameConverter;
1616

17-
import static org.bytedeco.javacpp.opencv_core.*;
18-
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
19-
import static org.bytedeco.javacpp.opencv_imgproc.*;
17+
import org.bytedeco.opencv.opencv_core.*;
18+
import org.bytedeco.opencv.opencv_imgproc.*;
19+
import static org.bytedeco.opencv.global.opencv_core.*;
20+
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
21+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
2022

2123
public class ColoredObjectTrack implements Runnable {
2224

samples/DeepLearningFaceDetection.java

+9-14
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
import org.bytedeco.javacpp.indexer.FloatIndexer;
2-
import static org.bytedeco.javacpp.opencv_core.CV_32F;
3-
import org.bytedeco.javacpp.opencv_core.Mat;
4-
import org.bytedeco.javacpp.opencv_core.Point;
5-
import org.bytedeco.javacpp.opencv_core.Rect;
6-
import org.bytedeco.javacpp.opencv_core.Scalar;
7-
import org.bytedeco.javacpp.opencv_core.Size;
8-
import org.bytedeco.javacpp.opencv_dnn.Net;
9-
import static org.bytedeco.javacpp.opencv_dnn.blobFromImage;
10-
import static org.bytedeco.javacpp.opencv_dnn.readNetFromCaffe;
11-
import static org.bytedeco.javacpp.opencv_imgproc.rectangle;
12-
import static org.bytedeco.javacpp.opencv_imgproc.resize;
13-
import static org.bytedeco.javacpp.opencv_videoio.CAP_PROP_FRAME_HEIGHT;
14-
import static org.bytedeco.javacpp.opencv_videoio.CAP_PROP_FRAME_WIDTH;
15-
import org.bytedeco.javacpp.opencv_videoio.VideoCapture;
162
import org.bytedeco.javacv.CanvasFrame;
173
import org.bytedeco.javacv.OpenCVFrameConverter;
184

5+
import org.bytedeco.opencv.opencv_core.*;
6+
import org.bytedeco.opencv.opencv_dnn.*;
7+
import org.bytedeco.opencv.opencv_imgproc.*;
8+
import org.bytedeco.opencv.opencv_videoio.*;
9+
import static org.bytedeco.opencv.global.opencv_core.*;
10+
import static org.bytedeco.opencv.global.opencv_dnn.*;
11+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
12+
import static org.bytedeco.opencv.global.opencv_videoio.*;
13+
1914
/**
2015
* Created on Jul 28, 2018
2116
*

samples/DeinterlacedVideoPlayer.java

+2-8
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import static org.bytedeco.javacpp.opencv_core.cvClearMemStorage;
2-
31
import org.bytedeco.javacpp.Loader;
4-
import org.bytedeco.javacpp.avutil;
5-
import org.bytedeco.javacpp.opencv_core.CvMemStorage;
6-
import org.bytedeco.javacpp.opencv_objdetect;
72
import org.bytedeco.javacv.FFmpegFrameFilter;
83
import org.bytedeco.javacv.Frame;
94
import org.bytedeco.javacv.FrameFilter;
105
import org.bytedeco.javacv.FrameGrabber;
116
import org.bytedeco.javacv.FrameGrabber.Exception;
127
import org.bytedeco.javacv.OpenCVFrameGrabber;
138

9+
import org.bytedeco.ffmpeg.global.avutil;
10+
1411
public class DeinterlacedVideoPlayer {
1512

1613
private static final int DEVICE_ID = 0;
@@ -25,15 +22,12 @@ public class DeinterlacedVideoPlayer {
2522
public DeinterlacedVideoPlayer() {}
2623

2724
public void start() {
28-
Loader.load(opencv_objdetect.class);
2925
FrameFilter filter = null;
3026
try {
3127
startFrameGrabber();
32-
CvMemStorage storage = CvMemStorage.create();
3328

3429
Frame frame = null;
3530
while ((frame = grabber.grab()) != null) {
36-
cvClearMemStorage(storage);
3731
if (filter == null) {
3832
filter = new FFmpegFrameFilter(ffmpegString, frame.imageWidth, frame.imageHeight);
3933
filter.setPixelFormat(PIXEL_FORMAT);

samples/Demo.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@
2525
import org.bytedeco.javacv.*;
2626
import org.bytedeco.javacpp.*;
2727
import org.bytedeco.javacpp.indexer.*;
28-
import static org.bytedeco.javacpp.opencv_core.*;
29-
import static org.bytedeco.javacpp.opencv_imgproc.*;
30-
import static org.bytedeco.javacpp.opencv_calib3d.*;
31-
import static org.bytedeco.javacpp.opencv_objdetect.*;
28+
import org.bytedeco.opencv.opencv_core.*;
29+
import org.bytedeco.opencv.opencv_imgproc.*;
30+
import org.bytedeco.opencv.opencv_calib3d.*;
31+
import org.bytedeco.opencv.opencv_objdetect.*;
32+
import static org.bytedeco.opencv.global.opencv_core.*;
33+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
34+
import static org.bytedeco.opencv.global.opencv_calib3d.*;
35+
import static org.bytedeco.opencv.global.opencv_objdetect.*;
3236

3337
public class Demo {
3438
public static void main(String[] args) throws Exception {
@@ -41,9 +45,6 @@ public static void main(String[] args) throws Exception {
4145
classifierName = file.getAbsolutePath();
4246
}
4347

44-
// Preload the opencv_objdetect module to work around a known bug.
45-
Loader.load(opencv_objdetect.class);
46-
4748
// We can "cast" Pointer objects by instantiating a new object of the desired class.
4849
CascadeClassifier classifier = new CascadeClassifier(classifierName);
4950
if (classifier == null) {
@@ -52,7 +53,7 @@ public static void main(String[] args) throws Exception {
5253
}
5354

5455
// The available FrameGrabber classes include OpenCVFrameGrabber (opencv_videoio),
55-
// DC1394FrameGrabber, FlyCaptureFrameGrabber, OpenKinectFrameGrabber, OpenKinect2FrameGrabber,
56+
// DC1394FrameGrabber, FlyCapture2FrameGrabber, OpenKinectFrameGrabber, OpenKinect2FrameGrabber,
5657
// RealSenseFrameGrabber, PS3EyeFrameGrabber, VideoInputFrameGrabber, and FFmpegFrameGrabber.
5758
FrameGrabber grabber = FrameGrabber.createDefault(0);
5859
grabber.start();

samples/FFmpegStreamingTimeout.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
21
import java.util.concurrent.TimeUnit;
32
import java.util.concurrent.atomic.AtomicBoolean;
43
import org.bytedeco.javacpp.Pointer;
5-
import org.bytedeco.javacpp.avformat;
64
import org.bytedeco.javacv.FFmpegFrameGrabber;
75
import org.bytedeco.javacv.Frame;
86
import org.bytedeco.javacv.FrameGrabber;
97

8+
import org.bytedeco.ffmpeg.avformat.*;
9+
import static org.bytedeco.ffmpeg.global.avformat.*;
10+
1011
/**
1112
*
1213
* @author Dmitriy Gerashenko <[email protected]>
@@ -108,7 +109,7 @@ private static void testWithCallback() {
108109
grabber.start();
109110

110111
final AtomicBoolean interruptFlag = new AtomicBoolean(false);
111-
avformat.AVIOInterruptCB.Callback_Pointer cp = new avformat.AVIOInterruptCB.Callback_Pointer() {
112+
AVIOInterruptCB.Callback_Pointer cp = new AVIOInterruptCB.Callback_Pointer() {
112113
@Override
113114
public int call(Pointer pointer) {
114115
// 0 - continue, 1 - exit
@@ -118,20 +119,20 @@ public int call(Pointer pointer) {
118119
}
119120

120121
};
121-
avformat.AVFormatContext oc = grabber.getFormatContext();
122-
avformat.avformat_alloc_context();
123-
avformat.AVIOInterruptCB cb = new avformat.AVIOInterruptCB();
122+
AVFormatContext oc = grabber.getFormatContext();
123+
avformat_alloc_context();
124+
AVIOInterruptCB cb = new AVIOInterruptCB();
124125
cb.callback(cp);
125126
oc.interrupt_callback(cb);
126-
new Thread(() -> {
127+
new Thread(new Runnable() { public void run() {
127128
try {
128129
TimeUnit.SECONDS.sleep(TIMEOUT);
129130
interruptFlag.set(true);
130131
System.out.println("interrupt flag was changed");
131132
} catch (InterruptedException ex) {
132133
System.out.println("exception in interruption thread: " + ex);
133134
}
134-
}).start();
135+
}}).start();
135136

136137
Frame frame = null;
137138
/**

samples/FaceApplet.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,18 @@
77
import java.io.File;
88
import java.io.IOException;
99
import org.bytedeco.javacpp.Loader;
10-
import org.bytedeco.javacpp.opencv_objdetect;
1110
import org.bytedeco.javacv.Frame;
1211
import org.bytedeco.javacv.FrameGrabber;
1312
import org.bytedeco.javacv.Java2DFrameConverter;
1413
import org.bytedeco.javacv.OpenCVFrameConverter;
1514
import org.bytedeco.javacv.OpenCVFrameGrabber;
1615

17-
import static org.bytedeco.javacpp.opencv_core.*;
18-
import static org.bytedeco.javacpp.opencv_imgproc.*;
19-
import static org.bytedeco.javacpp.opencv_objdetect.*;
16+
import org.bytedeco.opencv.opencv_core.*;
17+
import org.bytedeco.opencv.opencv_imgproc.*;
18+
import org.bytedeco.opencv.opencv_objdetect.*;
19+
import static org.bytedeco.opencv.global.opencv_core.*;
20+
import static org.bytedeco.opencv.global.opencv_imgproc.*;
21+
import static org.bytedeco.opencv.global.opencv_objdetect.*;
2022

2123
/**
2224
*

0 commit comments

Comments
 (0)