1
1
package com .baeldung .imageprocessing .opencv ;
2
2
3
- import javafx .animation .AnimationTimer ;
4
- import javafx .application .Application ;
5
- import javafx .scene .Scene ;
6
- import javafx .scene .image .Image ;
7
- import javafx .scene .image .ImageView ;
8
- import javafx .scene .layout .HBox ;
9
- import javafx .stage .Stage ;
10
- import nu .pattern .OpenCV ;
3
+ import java .io .ByteArrayInputStream ;
4
+
11
5
import org .opencv .core .Mat ;
12
6
import org .opencv .core .MatOfByte ;
13
7
import org .opencv .core .MatOfRect ;
20
14
import org .opencv .objdetect .Objdetect ;
21
15
import org .opencv .videoio .VideoCapture ;
22
16
23
- import java .io .ByteArrayInputStream ;
17
+ import javafx .animation .AnimationTimer ;
18
+ import javafx .application .Application ;
19
+ import javafx .scene .Scene ;
20
+ import javafx .scene .image .Image ;
21
+ import javafx .scene .image .ImageView ;
22
+ import javafx .scene .layout .HBox ;
23
+ import javafx .stage .Stage ;
24
+ import nu .pattern .OpenCV ;
24
25
25
26
public class CameraStream extends Application {
27
+
26
28
private VideoCapture capture ;
27
29
28
30
public void start (Stage stage ) throws Exception {
29
31
OpenCV .loadShared ();
30
- capture = new VideoCapture (0 ); // The number is the ID of the camera
32
+ capture = new VideoCapture (0 ); // The number is the ID of the camera
31
33
ImageView imageView = new ImageView ();
32
34
HBox hbox = new HBox (imageView );
33
35
Scene scene = new Scene (hbox );
34
36
stage .setScene (scene );
35
37
stage .show ();
36
- new AnimationTimer (){
38
+ new AnimationTimer () {
37
39
@ Override
38
40
public void handle (long l ) {
39
41
imageView .setImage (getCapture ());
@@ -58,7 +60,8 @@ public Image mat2Img(Mat mat) {
58
60
MatOfByte bytes = new MatOfByte ();
59
61
Imgcodecs .imencode ("img" , mat , bytes );
60
62
ByteArrayInputStream inputStream = new ByteArrayInputStream (bytes .toArray ());
61
- Image img = new Image (inputStream ); return img ;
63
+ Image img = new Image (inputStream );
64
+ return img ;
62
65
}
63
66
64
67
public static void main (String [] args ) {
@@ -70,17 +73,10 @@ public static Mat detectFace(Mat inputImage) {
70
73
CascadeClassifier cascadeClassifier = new CascadeClassifier ();
71
74
int minFaceSize = Math .round (inputImage .rows () * 0.1f );
72
75
cascadeClassifier .load ("./src/main/resources/haarcascades/haarcascade_frontalface_alt.xml" );
73
- cascadeClassifier .detectMultiScale (inputImage ,
74
- facesDetected ,
75
- 1.1 ,
76
- 3 ,
77
- Objdetect .CASCADE_SCALE_IMAGE ,
78
- new Size (minFaceSize , minFaceSize ),
79
- new Size ()
80
- );
81
- Rect [] facesArray = facesDetected .toArray ();
82
- for (Rect face : facesArray ) {
83
- Imgproc .rectangle (inputImage , face .tl (), face .br (), new Scalar (0 , 0 , 255 ), 3 );
76
+ cascadeClassifier .detectMultiScale (inputImage , facesDetected , 1.1 , 3 , Objdetect .CASCADE_SCALE_IMAGE , new Size (minFaceSize , minFaceSize ), new Size ());
77
+ Rect [] facesArray = facesDetected .toArray ();
78
+ for (Rect face : facesArray ) {
79
+ Imgproc .rectangle (inputImage , face .tl (), face .br (), new Scalar (0 , 0 , 255 ), 3 );
84
80
}
85
81
return inputImage ;
86
82
}
0 commit comments