5
5
import org .json .JSONObject ;
6
6
import org .opencv .calib3d .Calib3d ;
7
7
import org .opencv .core .*;
8
- import org .opencv .highgui .Highgui ;
8
+ import org .opencv .imgcodecs .Imgcodecs ;
9
+ import org .opencv .imgproc .Imgproc ;
10
+
9
11
import org .slf4j .Logger ;
10
12
import org .slf4j .LoggerFactory ;
11
13
12
14
import objects .ImageLocation ;
13
15
import objects .ImageSearchResult ;
14
16
15
17
import java .io .*;
16
- import java .lang .reflect .Field ;
17
18
import java .math .BigDecimal ;
18
19
import java .math .RoundingMode ;
19
20
import java .util .LinkedList ;
@@ -28,22 +29,20 @@ public class AkazeImageFinder {
28
29
private static final Logger logger = LoggerFactory .getLogger (AkazeImageFinder .class );
29
30
30
31
protected double getSceneHeight (String sceneFile ) {
31
- Mat img_scene = Highgui .imread (sceneFile , Highgui .CV_LOAD_IMAGE_UNCHANGED );
32
- double scene_height = img_scene .rows ();
33
- return scene_height ;
32
+ Mat img_scene = Imgcodecs .imread (sceneFile , Imgcodecs .CV_LOAD_IMAGE_UNCHANGED );
33
+ return img_scene .rows ();
34
34
}
35
35
36
36
protected double getSceneWidth (String sceneFile ) {
37
- Mat img_scene = Highgui .imread (sceneFile , Highgui .CV_LOAD_IMAGE_UNCHANGED );
38
- double scene_width = img_scene .cols ();
39
- return scene_width ;
37
+ Mat img_scene = Imgcodecs .imread (sceneFile , Imgcodecs .CV_LOAD_IMAGE_UNCHANGED );
38
+ return img_scene .cols ();
40
39
}
41
40
42
41
protected ImageLocation findImage (String queryImageFile , String sceneFile , double tolerance ) {
43
42
44
43
long start_time = System .nanoTime ();
45
- Mat img_object = Highgui .imread (queryImageFile , Highgui .CV_LOAD_IMAGE_UNCHANGED );
46
- Mat img_scene = Highgui .imread (sceneFile , Highgui .CV_LOAD_IMAGE_UNCHANGED );
44
+ Mat img_object = Imgcodecs .imread (queryImageFile , Imgcodecs .CV_LOAD_IMAGE_UNCHANGED );
45
+ Mat img_scene = Imgcodecs .imread (sceneFile , Imgcodecs .CV_LOAD_IMAGE_UNCHANGED );
47
46
48
47
49
48
double scene_height = img_scene .rows ();
@@ -60,8 +59,8 @@ protected ImageLocation findImage(String queryImageFile, String sceneFile, doubl
60
59
Mat resized_img_scene = new Mat ();
61
60
Size size = new Size (scene_width / resizeFactor , scene_height / resizeFactor );
62
61
resize (img_scene , resized_img_scene , size );
63
- Highgui .imwrite (sceneFile , resized_img_scene );
64
- img_scene = Highgui .imread (sceneFile , Highgui .CV_LOAD_IMAGE_UNCHANGED );
62
+ Imgcodecs .imwrite (sceneFile , resized_img_scene );
63
+ img_scene = Imgcodecs .imread (sceneFile , Imgcodecs .CV_LOAD_IMAGE_UNCHANGED );
65
64
logger .info ("Image was resized, resize factor is: " + resizeFactor );
66
65
} else {
67
66
resizeFactor = 1 ;
@@ -84,7 +83,7 @@ protected ImageLocation findImage(String queryImageFile, String sceneFile, doubl
84
83
double initial_height = img_object .size ().height ;
85
84
double initial_width = img_object .size ().width ;
86
85
87
- Highgui .imwrite (sceneFile , img_scene );
86
+ Imgcodecs .imwrite (sceneFile , img_scene );
88
87
89
88
//finding homography
90
89
LinkedList <Point > objList = new LinkedList <Point >();
@@ -253,7 +252,7 @@ protected void cropImage(ImageSearchResult imageDto) {
253
252
int scaleFactor = imageDto .getImageLocation ().getScaleFactor ();
254
253
double resizeFactor = imageDto .getImageLocation ().getResizeFactor ();
255
254
256
- Mat img_object = Highgui .imread (scene_filename );
255
+ Mat img_object = Imgcodecs .imread (scene_filename );
257
256
258
257
int x_resized = (int ) (x / resizeFactor )*scaleFactor ;
259
258
int y_resized = (int ) (y / resizeFactor )*scaleFactor ;
@@ -263,7 +262,7 @@ protected void cropImage(ImageSearchResult imageDto) {
263
262
log (img_object .toString ());
264
263
log (croppedRect .toString ());
265
264
Mat croppedImage = new Mat (img_object , croppedRect );
266
- Highgui .imwrite (scene_filename , croppedImage );
265
+ Imgcodecs .imwrite (scene_filename , croppedImage );
267
266
}
268
267
269
268
private Mat drawFoundHomography (Mat img_object , String filename , Mat h ) {
@@ -277,14 +276,14 @@ private Mat drawFoundHomography(Mat img_object, String filename, Mat h) {
277
276
278
277
Core .perspectiveTransform (obj_corners , scene_corners , h );
279
278
280
- Mat img = Highgui .imread (filename , Highgui .CV_LOAD_IMAGE_COLOR );
279
+ Mat img = Imgcodecs .imread (filename , Imgcodecs .CV_LOAD_IMAGE_COLOR );
281
280
282
- Core .line (img , new Point (scene_corners .get (0 , 0 )), new Point (scene_corners .get (1 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
283
- Core .line (img , new Point (scene_corners .get (1 , 0 )), new Point (scene_corners .get (2 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
284
- Core .line (img , new Point (scene_corners .get (2 , 0 )), new Point (scene_corners .get (3 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
285
- Core .line (img , new Point (scene_corners .get (3 , 0 )), new Point (scene_corners .get (0 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
281
+ Imgproc .line (img , new Point (scene_corners .get (0 , 0 )), new Point (scene_corners .get (1 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
282
+ Imgproc .line (img , new Point (scene_corners .get (1 , 0 )), new Point (scene_corners .get (2 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
283
+ Imgproc .line (img , new Point (scene_corners .get (2 , 0 )), new Point (scene_corners .get (3 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
284
+ Imgproc .line (img , new Point (scene_corners .get (3 , 0 )), new Point (scene_corners .get (0 , 0 )), new Scalar (0 , 255 , 0 ), 4 );
286
285
287
- Highgui .imwrite (filename , img );
286
+ Imgcodecs .imwrite (filename , img );
288
287
289
288
return scene_corners ;
290
289
}
@@ -377,42 +376,10 @@ private String runAkazeMatch(String object_filename, String scene_filename) thro
377
376
}
378
377
379
378
protected static void setupOpenCVEnv () {
380
- addOpenCvToJavaLibraryPath ();
381
- setSysPathAccessible ();
382
- logger .info ("java.library.path: " + System .getProperty ("java.library.path" ));
379
+ nu .pattern .OpenCV .loadShared ();
383
380
System .loadLibrary (Core .NATIVE_LIBRARY_NAME );
384
381
}
385
382
386
- private static void setSysPathAccessible () {
387
- Field fieldSysPath = null ;
388
- try {
389
- fieldSysPath = ClassLoader .class .getDeclaredField ("sys_paths" );
390
- } catch (NoSuchFieldException e ) {
391
- e .printStackTrace ();
392
- }
393
- fieldSysPath .setAccessible (true );
394
- try {
395
- fieldSysPath .set (null , null );
396
- } catch (IllegalAccessException e ) {
397
- }
398
- }
399
-
400
- private static void addOpenCvToJavaLibraryPath () {
401
- String platformName = System .getProperty ("os.name" );
402
- logger .info (platformName );
403
- if (platformName .toLowerCase ().contains ("mac" )) {
404
- System .setProperty ("java.library.path" , System .getProperty ("java.library.path" ) + File .pathSeparator + System .getProperty ("user.dir" ) + "/lib/mac/opencv" );
405
- } else if (platformName .toLowerCase ().contains ("win" )) {
406
- if (System .getProperty ("os.arch" ).contains ("64" )) {
407
- System .setProperty ("java.library.path" , System .getProperty ("java.library.path" ) + File .pathSeparator + System .getProperty ("user.dir" ) + "/lib/win/opencv/x64" );
408
- } else {
409
- System .setProperty ("java.library.path" , System .getProperty ("java.library.path" ) + File .pathSeparator + System .getProperty ("user.dir" ) + "/lib/win/opencv/x86" );
410
- }
411
- } else {
412
- System .setProperty ("java.library.path" , System .getProperty ("java.library.path" ) + File .pathSeparator + System .getProperty ("user.dir" ) + "/lib/linux/opencv" );
413
- }
414
- }
415
-
416
383
private JSONObject getJsonObject (String filename ) {
417
384
File jsonFile = new File (filename );
418
385
InputStream is = null ;
0 commit comments