Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
c49b23d4
Commit
c49b23d4
authored
Jan 14, 2013
by
Andrey Kamaev
Committed by
OpenCV Buildbot
Jan 14, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #240 from emchristiansen:javatest2.4
parents
5e2726fb
b0e1cb47
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
717 additions
and
59 deletions
+717
-59
CMakeLists.txt
modules/java/CMakeLists.txt
+6
-1
OpenCVTestCase.java
...java/android_test/src/org/opencv/test/OpenCVTestCase.java
+10
-13
TermCriteriaTest.java
...droid_test/src/org/opencv/test/core/TermCriteriaTest.java
+1
-1
BRIEFDescriptorExtractorTest.java
.../opencv/test/features2d/BRIEFDescriptorExtractorTest.java
+1
-2
BruteForceDescriptorMatcherTest.java
...encv/test/features2d/BruteForceDescriptorMatcherTest.java
+1
-2
BruteForceHammingDescriptorMatcherTest.java
...st/features2d/BruteForceHammingDescriptorMatcherTest.java
+1
-1
BruteForceHammingLUTDescriptorMatcherTest.java
...features2d/BruteForceHammingLUTDescriptorMatcherTest.java
+1
-1
BruteForceL1DescriptorMatcherTest.java
...cv/test/features2d/BruteForceL1DescriptorMatcherTest.java
+1
-1
BruteForceSL2DescriptorMatcherTest.java
...v/test/features2d/BruteForceSL2DescriptorMatcherTest.java
+1
-2
FASTFeatureDetectorTest.java
...c/org/opencv/test/features2d/FASTFeatureDetectorTest.java
+1
-3
FlannBasedDescriptorMatcherTest.java
...encv/test/features2d/FlannBasedDescriptorMatcherTest.java
+1
-3
ORBDescriptorExtractorTest.java
...rg/opencv/test/features2d/ORBDescriptorExtractorTest.java
+7
-4
SIFTDescriptorExtractorTest.java
...g/opencv/test/features2d/SIFTDescriptorExtractorTest.java
+7
-4
STARFeatureDetectorTest.java
...c/org/opencv/test/features2d/STARFeatureDetectorTest.java
+1
-15
SURFDescriptorExtractorTest.java
...g/opencv/test/features2d/SURFDescriptorExtractorTest.java
+1
-2
SURFFeatureDetectorTest.java
...c/org/opencv/test/features2d/SURFFeatureDetectorTest.java
+1
-4
CMakeLists.txt
modules/java/java_test/CMakeLists.txt
+80
-0
build.xml
modules/java/java_test/build.xml
+59
-0
junit-4.11.jar
modules/java/java_test/lib/junit-4.11.jar
+0
-0
OpenCVTestCase.java
...es/java/java_test/src/org/opencv/test/OpenCVTestCase.java
+492
-0
OpenCVTestRunner.java
.../java/java_test/src/org/opencv/test/OpenCVTestRunner.java
+44
-0
No files found.
modules/java/CMakeLists.txt
View file @
c49b23d4
...
...
@@ -295,7 +295,12 @@ endif(ANDROID)
add_dependencies
(
${
lib_target
}
${
api_target
}
)
add_dependencies
(
${
the_module
}
${
lib_target
}
)
#android test project
#
android test project
if
(
ANDROID AND BUILD_TESTS
)
add_subdirectory
(
android_test
)
endif
()
# Desktop Java test project.
if
((
NOT ANDROID
)
AND BUILD_TESTS
)
add_subdirectory
(
java_test
)
endif
()
modules/java/android_test/src/org/opencv/test/OpenCVTestCase.java
View file @
c49b23d4
package
org
.
opencv
.
test
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.nio.MappedByteBuffer
;
import
java.nio.channels.FileChannel
;
...
...
@@ -426,24 +428,19 @@ public class OpenCVTestCase extends TestCase {
}
protected
static
String
readFile
(
String
path
)
{
FileInputStream
stream
=
null
;
try
{
stream
=
new
FileInputStream
(
new
File
(
path
));
FileChannel
fc
=
stream
.
getChannel
();
MappedByteBuffer
bb
=
fc
.
map
(
FileChannel
.
MapMode
.
READ_ONLY
,
0
,
fc
.
size
());
return
Charset
.
defaultCharset
().
decode
(
bb
).
toString
();
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
path
));
String
line
;
StringBuffer
result
=
new
StringBuffer
();
while
((
line
=
br
.
readLine
())
!=
null
)
{
result
.
append
(
line
);
result
.
append
(
"\n"
);
}
return
result
.
toString
();
}
catch
(
IOException
e
)
{
OpenCVTestRunner
.
Log
(
"Failed to read file \""
+
path
+
"\". Exception is thrown: "
+
e
);
return
null
;
}
finally
{
if
(
stream
!=
null
)
try
{
stream
.
close
();
}
catch
(
IOException
e
)
{
OpenCVTestRunner
.
Log
(
"Exception is thrown: "
+
e
);
}
}
}
...
...
modules/java/android_test/src/org/opencv/test/core/TermCriteriaTest.java
View file @
c49b23d4
...
...
@@ -77,7 +77,7 @@ public class TermCriteriaTest extends OpenCVTestCase {
public
void
testToString
()
{
String
actual
=
tc2
.
toString
();
String
expected
=
"{ type: 2, maxCount: 4, epsilon:
0.001
}"
;
String
expected
=
"{ type: 2, maxCount: 4, epsilon:
"
+
EPS
+
"
}"
;
assertEquals
(
expected
,
actual
);
}
...
...
modules/java/android_test/src/org/opencv/test/features2d/BRIEFDescriptorExtractorTest.java
View file @
c49b23d4
...
...
@@ -26,10 +26,9 @@ public class BRIEFDescriptorExtractorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
extractor
=
DescriptorExtractor
.
create
(
DescriptorExtractor
.
BRIEF
);
matSize
=
100
;
super
.
setUp
();
}
public
void
testComputeListOfMatListOfListOfKeyPointListOfMat
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/BruteForceDescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -80,6 +80,7 @@ public class BruteForceDescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
BRUTEFORCE
);
matSize
=
100
;
...
...
@@ -90,8 +91,6 @@ public class BruteForceDescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
3
,
1
,
0
,
0.48435235f
),
new
DMatch
(
4
,
0
,
0
,
1.0836693f
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/BruteForceHammingDescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -65,6 +65,7 @@ public class BruteForceHammingDescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
BRUTEFORCE_HAMMING
);
matSize
=
100
;
...
...
@@ -73,7 +74,6 @@ public class BruteForceHammingDescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
1
,
2
,
0
,
42
),
new
DMatch
(
2
,
1
,
0
,
40
),
new
DMatch
(
3
,
3
,
0
,
53
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/BruteForceHammingLUTDescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -65,6 +65,7 @@ public class BruteForceHammingLUTDescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
BRUTEFORCE_HAMMINGLUT
);
matSize
=
100
;
...
...
@@ -73,7 +74,6 @@ public class BruteForceHammingLUTDescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
1
,
2
,
0
,
42
),
new
DMatch
(
2
,
1
,
0
,
40
),
new
DMatch
(
3
,
3
,
0
,
53
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/BruteForceL1DescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -80,6 +80,7 @@ public class BruteForceL1DescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
BRUTEFORCE_L1
);
matSize
=
100
;
...
...
@@ -90,7 +91,6 @@ public class BruteForceL1DescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
3
,
1
,
0
,
2.6545324f
),
new
DMatch
(
4
,
0
,
0
,
6.1294870f
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/BruteForceSL2DescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -85,6 +85,7 @@ public class BruteForceSL2DescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
BRUTEFORCE_SL2
);
matSize
=
100
;
...
...
@@ -95,8 +96,6 @@ public class BruteForceSL2DescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
3
,
1
,
0
,
0.23459719f
),
new
DMatch
(
4
,
0
,
0
,
1.174339f
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/FASTFeatureDetectorTest.java
View file @
c49b23d4
...
...
@@ -33,12 +33,10 @@ public class FASTFeatureDetectorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
detector
=
FeatureDetector
.
create
(
FeatureDetector
.
FAST
);
truth
=
new
KeyPoint
[]
{
new
KeyPoint
(
32
,
27
,
7
,
-
1
,
254
,
0
,
-
1
),
new
KeyPoint
(
27
,
32
,
7
,
-
1
,
254
,
0
,
-
1
),
new
KeyPoint
(
73
,
68
,
7
,
-
1
,
254
,
0
,
-
1
),
new
KeyPoint
(
68
,
73
,
7
,
-
1
,
254
,
0
,
-
1
)
};
super
.
setUp
();
}
public
void
testCreate
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/FlannBasedDescriptorMatcherTest.java
View file @
c49b23d4
...
...
@@ -154,9 +154,9 @@ public class FlannBasedDescriptorMatcherTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
matcher
=
DescriptorMatcher
.
create
(
DescriptorMatcher
.
FLANNBASED
);
matSize
=
100
;
truth
=
new
DMatch
[]
{
new
DMatch
(
0
,
0
,
0
,
1.049694f
),
new
DMatch
(
1
,
0
,
0
,
1.0984558f
),
...
...
@@ -164,8 +164,6 @@ public class FlannBasedDescriptorMatcherTest extends OpenCVTestCase {
new
DMatch
(
3
,
1
,
0
,
0.48435235f
),
new
DMatch
(
4
,
0
,
0
,
1.0836693f
)
};
super
.
setUp
();
}
public
void
testAdd
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/ORBDescriptorExtractorTest.java
View file @
c49b23d4
...
...
@@ -31,10 +31,9 @@ public class ORBDescriptorExtractorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
extractor
=
DescriptorExtractor
.
create
(
DescriptorExtractor
.
ORB
);
matSize
=
100
;
super
.
setUp
();
}
public
void
testComputeListOfMatListOfListOfKeyPointListOfMat
()
{
...
...
@@ -101,7 +100,9 @@ public class ORBDescriptorExtractorTest extends OpenCVTestCase {
extractor
.
write
(
filename
);
String
truth
=
"<?xml version=\"1.0\"?>\n<opencv_storage>\n<name>Feature2D.ORB</name>\n<WTA_K>2</WTA_K>\n<edgeThreshold>31</edgeThreshold>\n<firstLevel>0</firstLevel>\n<nFeatures>500</nFeatures>\n<nLevels>8</nLevels>\n<patchSize>31</patchSize>\n<scaleFactor>1.2000000476837158e+00</scaleFactor>\n<scoreType>0</scoreType>\n</opencv_storage>\n"
;
assertEquals
(
truth
,
readFile
(
filename
));
String
actual
=
readFile
(
filename
);
actual
=
actual
.
replaceAll
(
"e\\+000"
,
"e+00"
);
// NOTE: workaround for different platforms double representation
assertEquals
(
truth
,
actual
);
}
public
void
testWriteYml
()
{
...
...
@@ -110,7 +111,9 @@ public class ORBDescriptorExtractorTest extends OpenCVTestCase {
extractor
.
write
(
filename
);
String
truth
=
"%YAML:1.0\nname: \"Feature2D.ORB\"\nWTA_K: 2\nedgeThreshold: 31\nfirstLevel: 0\nnFeatures: 500\nnLevels: 8\npatchSize: 31\nscaleFactor: 1.2000000476837158e+00\nscoreType: 0\n"
;
assertEquals
(
truth
,
readFile
(
filename
));
String
actual
=
readFile
(
filename
);
actual
=
actual
.
replaceAll
(
"e\\+000"
,
"e+00"
);
// NOTE: workaround for different platforms double representation
assertEquals
(
truth
,
actual
);
}
}
modules/java/android_test/src/org/opencv/test/features2d/SIFTDescriptorExtractorTest.java
View file @
c49b23d4
...
...
@@ -28,6 +28,7 @@ public class SIFTDescriptorExtractorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
extractor
=
DescriptorExtractor
.
create
(
DescriptorExtractor
.
SIFT
);
keypoint
=
new
KeyPoint
(
55.775577545166016f
,
44.224422454833984f
,
16
,
9.754629f
,
8617.863f
,
1
,
-
1
);
matSize
=
100
;
...
...
@@ -44,8 +45,6 @@ public class SIFTDescriptorExtractorTest extends OpenCVTestCase {
);
}
};
super
.
setUp
();
}
public
void
testComputeListOfMatListOfListOfKeyPointListOfMat
()
{
...
...
@@ -88,7 +87,9 @@ public class SIFTDescriptorExtractorTest extends OpenCVTestCase {
extractor
.
write
(
filename
);
String
truth
=
"<?xml version=\"1.0\"?>\n<opencv_storage>\n<name>Feature2D.SIFT</name>\n<contrastThreshold>4.0000000000000001e-02</contrastThreshold>\n<edgeThreshold>10.</edgeThreshold>\n<nFeatures>0</nFeatures>\n<nOctaveLayers>3</nOctaveLayers>\n<sigma>1.6000000000000001e+00</sigma>\n</opencv_storage>\n"
;
assertEquals
(
truth
,
readFile
(
filename
));
String
actual
=
readFile
(
filename
);
actual
=
actual
.
replaceAll
(
"e([+-])0(\\d\\d)"
,
"e$1$2"
);
// NOTE: workaround for different platforms double representation
assertEquals
(
truth
,
actual
);
}
public
void
testWriteYml
()
{
...
...
@@ -97,7 +98,9 @@ public class SIFTDescriptorExtractorTest extends OpenCVTestCase {
extractor
.
write
(
filename
);
String
truth
=
"%YAML:1.0\nname: \"Feature2D.SIFT\"\ncontrastThreshold: 4.0000000000000001e-02\nedgeThreshold: 10.\nnFeatures: 0\nnOctaveLayers: 3\nsigma: 1.6000000000000001e+00\n"
;
assertEquals
(
truth
,
readFile
(
filename
));
String
actual
=
readFile
(
filename
);
actual
=
actual
.
replaceAll
(
"e([+-])0(\\d\\d)"
,
"e$1$2"
);
// NOTE: workaround for different platforms double representation
assertEquals
(
truth
,
actual
);
}
}
modules/java/android_test/src/org/opencv/test/features2d/STARFeatureDetectorTest.java
View file @
c49b23d4
...
...
@@ -42,22 +42,10 @@ public class STARFeatureDetectorTest extends OpenCVTestCase {
}
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
detector
=
FeatureDetector
.
create
(
FeatureDetector
.
STAR
);
matSize
=
200
;
truth
=
new
KeyPoint
[]
{
/*
new KeyPoint(95, 80, 22, -1, 31.595734f, 0, -1),
new KeyPoint(105, 80, 22, -1, 31.595734f, 0, -1),
new KeyPoint(80, 95, 22, -1, 31.595734f, 0, -1),
new KeyPoint(120, 95, 22, -1, 31.595734f, 0, -1),
new KeyPoint(100, 100, 8, -1, -219.90825f, 0, -1),
new KeyPoint(80, 105, 22, -1, 31.595734f, 0, -1),
new KeyPoint(120, 105, 22, -1, 31.595734f, 0, -1),
new KeyPoint(95, 120, 22, -1, 31.595734f, 0, -1),
new KeyPoint(105, 120, 22, -1, 31.595734f, 0, -1)
*/
new
KeyPoint
(
95
,
80
,
22
,
-
1
,
31.5957f
,
0
,
-
1
),
new
KeyPoint
(
105
,
80
,
22
,
-
1
,
31.5957f
,
0
,
-
1
),
new
KeyPoint
(
80
,
95
,
22
,
-
1
,
31.5957f
,
0
,
-
1
),
...
...
@@ -68,8 +56,6 @@ public class STARFeatureDetectorTest extends OpenCVTestCase {
new
KeyPoint
(
95
,
120
,
22
,
-
1
,
31.5957f
,
0
,
-
1
),
new
KeyPoint
(
105
,
120
,
22
,
-
1
,
31.5957f
,
0
,
-
1
)
};
super
.
setUp
();
}
public
void
testCreate
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/SURFDescriptorExtractorTest.java
View file @
c49b23d4
...
...
@@ -26,10 +26,9 @@ public class SURFDescriptorExtractorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
extractor
=
DescriptorExtractor
.
create
(
DescriptorExtractor
.
SURF
);
matSize
=
100
;
super
.
setUp
();
}
public
void
testComputeListOfMatListOfListOfKeyPointListOfMat
()
{
...
...
modules/java/android_test/src/org/opencv/test/features2d/SURFFeatureDetectorTest.java
View file @
c49b23d4
...
...
@@ -52,18 +52,15 @@ public class SURFFeatureDetectorTest extends OpenCVTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
detector
=
FeatureDetector
.
create
(
FeatureDetector
.
SURF
);
matSize
=
100
;
truth
=
new
KeyPoint
[]
{
new
KeyPoint
(
55.775578f
,
55.775578f
,
16
,
80.245735f
,
8617.8633f
,
0
,
-
1
),
new
KeyPoint
(
44.224422f
,
55.775578f
,
16
,
170.24574f
,
8617.8633f
,
0
,
-
1
),
new
KeyPoint
(
44.224422f
,
44.224422f
,
16
,
260.24573f
,
8617.8633f
,
0
,
-
1
),
new
KeyPoint
(
55.775578f
,
44.224422f
,
16
,
350.24573f
,
8617.8633f
,
0
,
-
1
)
};
super
.
setUp
();
}
public
void
testCreate
()
{
...
...
modules/java/java_test/CMakeLists.txt
0 → 100644
View file @
c49b23d4
ocv_check_dependencies
(
opencv_java
${
OPENCV_MODULE_opencv_java_OPT_DEPS
}
${
OPENCV_MODULE_opencv_java_REQ_DEPS
}
)
if
(
NOT OCV_DEPENDENCIES_FOUND OR NOT ANT_EXECUTABLE
)
return
()
endif
()
# TODO: This has the same name as the Android test project. That project should
# probably be renamed.
project
(
opencv_test_java
)
set
(
opencv_test_java_bin_dir
"
${
CMAKE_CURRENT_BINARY_DIR
}
/.build"
)
set
(
android_source_dir
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/../android_test"
)
set
(
java_source_dir
${
CMAKE_CURRENT_SOURCE_DIR
}
)
# get project sources
file
(
GLOB_RECURSE opencv_test_java_files RELATIVE
"
${
android_source_dir
}
"
"
${
android_source_dir
}
/res/*"
"
${
android_source_dir
}
/src/*"
)
ocv_list_filterout
(
opencv_test_java_files
".svn"
)
ocv_list_filterout
(
opencv_test_java_files
".*#.*"
)
# These are the files that need to be updated for pure Java.
ocv_list_filterout
(
opencv_test_java_files
".*OpenCVTestCase.*"
)
ocv_list_filterout
(
opencv_test_java_files
".*OpenCVTestRunner.*"
)
# These files aren't for desktop Java.
ocv_list_filterout
(
opencv_test_java_files
".*android.*"
)
# These are files updated for pure Java.
file
(
GLOB_RECURSE modified_files RELATIVE
"
${
java_source_dir
}
"
"
${
java_source_dir
}
/src/*"
)
ocv_list_filterout
(
modified_files
".svn"
)
ocv_list_filterout
(
modified_files
".*#.*"
)
# These are extra jars needed to run the tests.
file
(
GLOB_RECURSE lib_files RELATIVE
"
${
java_source_dir
}
"
"
${
java_source_dir
}
/lib/*"
)
ocv_list_filterout
(
lib_files
".svn"
)
ocv_list_filterout
(
lib_files
".*#.*"
)
# copy sources out from the build tree
set
(
opencv_test_java_file_deps
""
)
foreach
(
f
${
opencv_test_java_files
}
)
add_custom_command
(
OUTPUT
"
${
opencv_test_java_bin_dir
}
/
${
f
}
"
COMMAND
${
CMAKE_COMMAND
}
-E copy
"
${
android_source_dir
}
/
${
f
}
"
"
${
opencv_test_java_bin_dir
}
/
${
f
}
"
MAIN_DEPENDENCY
"
${
android_source_dir
}
/
${
f
}
"
COMMENT
"Copying
${
f
}
"
)
list
(
APPEND opencv_test_java_file_deps
"
${
android_source_dir
}
/
${
f
}
"
"
${
opencv_test_java_bin_dir
}
/
${
f
}
"
)
endforeach
()
# Overwrite select Android sources with Java-specific sources.
# Also, copy over the libs we'll need for testing.
foreach
(
f
${
modified_files
}
${
lib_files
}
)
add_custom_command
(
OUTPUT
"
${
opencv_test_java_bin_dir
}
/
${
f
}
"
COMMAND
${
CMAKE_COMMAND
}
-E copy
"
${
java_source_dir
}
/
${
f
}
"
"
${
opencv_test_java_bin_dir
}
/
${
f
}
"
MAIN_DEPENDENCY
"
${
java_source_dir
}
/
${
f
}
"
COMMENT
"Copying
${
f
}
"
)
list
(
APPEND opencv_test_java_file_deps
"
${
java_source_dir
}
/
${
f
}
"
)
endforeach
()
# Copy the OpenCV jar after it has been generated.
add_custom_command
(
OUTPUT
"
${
opencv_test_java_bin_dir
}
/bin/
${
JAR_NAME
}
"
COMMAND
${
CMAKE_COMMAND
}
-E copy
"
${
CMAKE_BINARY_DIR
}
/bin/
${
JAR_NAME
}
"
"
${
opencv_test_java_bin_dir
}
/bin/
${
JAR_NAME
}
"
COMMENT
"Copying the OpenCV jar"
)
add_custom_target
(
copy_opencv_jar ALL SOURCES
"
${
opencv_test_java_bin_dir
}
/bin/
${
JAR_NAME
}
"
)
# ${the_module} is the target for the Java jar.
add_dependencies
(
copy_opencv_jar
${
the_module
}
)
# Copy the ant build file.
file
(
COPY
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/build.xml"
DESTINATION
"
${
opencv_test_java_bin_dir
}
"
)
# Create a script for running the Java tests and place it in build/bin.
if
(
WIN32
)
file
(
WRITE
"
${
CMAKE_BINARY_DIR
}
/bin/opencv_test_java.cmd"
"cd
${
opencv_test_java_bin_dir
}
\n
set PATH=
${
EXECUTABLE_OUTPUT_PATH
}
/Release;%PATH%
\n
ant -DjavaLibraryPath=
${
EXECUTABLE_OUTPUT_PATH
}
/Release buildAndTest"
)
file
(
WRITE
"
${
CMAKE_BINARY_DIR
}
/bin/opencv_test_java_D.cmd"
"cd
${
opencv_test_java_bin_dir
}
\n
set PATH=
${
EXECUTABLE_OUTPUT_PATH
}
/Debug;%PATH%
\n
ant -DjavaLibraryPath=
${
EXECUTABLE_OUTPUT_PATH
}
/Debug buildAndTest"
)
else
()
file
(
WRITE
"
${
CMAKE_BINARY_DIR
}
/bin/opencv_test_java.sh"
"cd
${
opencv_test_java_bin_dir
}
;
\n
ant -DjavaLibraryPath=
${
LIBRARY_OUTPUT_PATH
}
buildAndTest;
\n
cd -"
)
endif
()
add_custom_target
(
${
PROJECT_NAME
}
ALL SOURCES
${
opencv_test_java_file_deps
}
)
add_dependencies
(
opencv_tests
${
PROJECT_NAME
}
)
modules/java/java_test/build.xml
0 → 100644
View file @
c49b23d4
<project>
<path
id=
"master-classpath"
>
<fileset
dir=
"lib"
>
<include
name=
"*.jar"
/>
</fileset>
<fileset
dir=
"bin"
>
<include
name=
"*.jar"
/>
</fileset>
</path>
<target
name=
"clean"
>
<delete
dir=
"build"
/>
<delete
dir=
"testResults"
/>
</target>
<target
name=
"compile"
>
<mkdir
dir=
"build/classes"
/>
<javac
sourcepath=
""
srcdir=
"src"
destdir=
"build/classes"
>
<include
name=
"**/*.java"
/>
<classpath
refid=
"master-classpath"
/>
</javac>
</target>
<target
name=
"jar"
>
<mkdir
dir=
"build/jar"
/>
<jar
destfile=
"build/jar/opencv-test.jar"
basedir=
"build/classes"
>
<manifest>
<attribute
name=
"Main-Class"
value=
"org.opencv.test.OpenCVTestRunner"
/>
</manifest>
</jar>
</target>
<target
name=
"test"
>
<mkdir
dir=
"testResults"
/>
<junit
printsummary=
"false"
haltonfailure=
"false"
haltonerror=
"false"
showoutput=
"false"
logfailedtests=
"true"
maxmemory=
"256m"
>
<sysproperty
key=
"java.library.path"
path=
"${javaLibraryPath}"
/>
<classpath
refid=
"master-classpath"
/>
<classpath>
<pathelement
location=
"build/classes"
/>
</classpath>
<formatter
type=
"xml"
/>
<batchtest
fork=
"yes"
todir=
"testResults"
>
<zipfileset
src=
"build/jar/opencv-test.jar"
includes=
"**/*.class"
excludes=
"**/OpenCVTest*"
>
<exclude
name=
"**/*$*.class"
/>
</zipfileset>
</batchtest>
</junit>
</target>
<target
name=
"buildAndTest"
>
<antcall
target=
"compile"
/>
<antcall
target=
"jar"
/>
<antcall
target=
"test"
/>
</target>
</project>
\ No newline at end of file
modules/java/java_test/lib/junit-4.11.jar
0 → 100644
View file @
c49b23d4
File added
modules/java/java_test/src/org/opencv/test/OpenCVTestCase.java
0 → 100644
View file @
c49b23d4
// TODO: This file is largely a duplicate of the one in android_test.
package
org
.
opencv
.
test
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.nio.MappedByteBuffer
;
import
java.nio.channels.FileChannel
;
import
java.nio.charset.Charset
;
import
java.util.List
;
import
junit.framework.TestCase
;
import
org.opencv.core.Core
;
import
org.opencv.core.CvType
;
import
org.opencv.core.Mat
;
import
org.opencv.core.Point
;
import
org.opencv.core.Point3
;
import
org.opencv.core.Rect
;
import
org.opencv.core.Scalar
;
import
org.opencv.core.Size
;
import
org.opencv.features2d.DMatch
;
import
org.opencv.features2d.KeyPoint
;
import
org.opencv.highgui.Highgui
;
public
class
OpenCVTestCase
extends
TestCase
{
//change to 'true' to unblock fail on fail("Not yet implemented")
public
static
final
boolean
passNYI
=
true
;
protected
static
boolean
isTestCaseEnabled
=
true
;
protected
static
final
int
matSize
=
10
;
protected
static
final
double
EPS
=
0.001
;
protected
static
final
double
weakEPS
=
0.5
;
private
static
final
String
TAG
=
"OpenCVTestCase"
;
protected
Mat
dst
;
protected
Mat
truth
;
protected
Scalar
colorBlack
;
protected
Scalar
colorWhite
;
// Naming notation: <channels info>_[depth]_[dimensions]_value
// examples: gray0 - single channel 8U 2d Mat filled with 0
// grayRnd - single channel 8U 2d Mat filled with random numbers
// gray0_32f_1d
// TODO: OpenCVTestCase refactorings
// - rename matrices
// - create methods gray0() and create src1 explicitly
// - create some masks
// - use truth member everywhere - remove truth from base class - each test
// fixture should use own truth filed
protected
Mat
gray0
;
protected
Mat
gray1
;
protected
Mat
gray2
;
protected
Mat
gray3
;
protected
Mat
gray9
;
protected
Mat
gray127
;
protected
Mat
gray128
;
protected
Mat
gray255
;
protected
Mat
grayRnd
;
protected
Mat
gray_16u_256
;
protected
Mat
gray_16s_1024
;
protected
Mat
gray0_32f
;
protected
Mat
gray1_32f
;
protected
Mat
gray3_32f
;
protected
Mat
gray9_32f
;
protected
Mat
gray255_32f
;
protected
Mat
grayE_32f
;
protected
Mat
grayRnd_32f
;
protected
Mat
gray0_32f_1d
;
protected
Mat
gray0_64f
;
protected
Mat
gray0_64f_1d
;
protected
Mat
rgba0
;
protected
Mat
rgba128
;
protected
Mat
rgbLena
;
protected
Mat
grayChess
;
protected
Mat
v1
;
protected
Mat
v2
;
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
try
{
System
.
loadLibrary
(
"opencv_java"
);
}
catch
(
SecurityException
e
)
{
System
.
out
.
println
(
e
.
toString
());
System
.
exit
(-
1
);
}
catch
(
UnsatisfiedLinkError
e
)
{
System
.
out
.
println
(
e
.
toString
());
System
.
exit
(-
1
);
}
String
pwd
;
try
{
pwd
=
new
File
(
"."
).
getCanonicalPath
()
+
File
.
separator
;
}
catch
(
IOException
e
)
{
System
.
out
.
println
(
e
);
return
;
}
OpenCVTestRunner
.
LENA_PATH
=
pwd
+
"res/drawable/lena.jpg"
;
OpenCVTestRunner
.
CHESS_PATH
=
pwd
+
"res/drawable/chessboard.jpg"
;
OpenCVTestRunner
.
LBPCASCADE_FRONTALFACE_PATH
=
pwd
+
"res/raw/lbpcascade_frontalface.xml"
;
assert
(
new
File
(
OpenCVTestRunner
.
LENA_PATH
).
exists
());
assert
(
new
File
(
OpenCVTestRunner
.
CHESS_PATH
).
exists
());
assert
(
new
File
(
OpenCVTestRunner
.
LBPCASCADE_FRONTALFACE_PATH
).
exists
());
dst
=
new
Mat
();
assertTrue
(
dst
.
empty
());
truth
=
null
;
colorBlack
=
new
Scalar
(
0
);
colorWhite
=
new
Scalar
(
255
,
255
,
255
);
gray0
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
0
));
gray1
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
1
));
gray2
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
2
));
gray3
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
3
));
gray9
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
9
));
gray127
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
127
));
gray128
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
128
));
gray255
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
,
new
Scalar
(
255
));
grayRnd
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8U
);
Core
.
randu
(
grayRnd
,
0
,
256
);
gray_16u_256
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_16U
,
new
Scalar
(
256
));
gray_16s_1024
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_16S
,
new
Scalar
(
1024
));
gray0_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
0.0
));
gray1_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
1.0
));
gray3_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
3.0
));
gray9_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
9.0
));
gray255_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
255.0
));
grayE_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
);
grayE_32f
=
Mat
.
eye
(
matSize
,
matSize
,
CvType
.
CV_32FC1
);
grayRnd_32f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_32F
);
Core
.
randu
(
grayRnd_32f
,
0
,
256
);
gray0_64f
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_64F
,
new
Scalar
(
0.0
));
gray0_32f_1d
=
new
Mat
(
1
,
matSize
,
CvType
.
CV_32F
,
new
Scalar
(
0.0
));
gray0_64f_1d
=
new
Mat
(
1
,
matSize
,
CvType
.
CV_64F
,
new
Scalar
(
0.0
));
rgba0
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8UC4
,
Scalar
.
all
(
0
));
rgba128
=
new
Mat
(
matSize
,
matSize
,
CvType
.
CV_8UC4
,
Scalar
.
all
(
128
));
rgbLena
=
Highgui
.
imread
(
OpenCVTestRunner
.
LENA_PATH
);
grayChess
=
Highgui
.
imread
(
OpenCVTestRunner
.
CHESS_PATH
,
0
);
v1
=
new
Mat
(
1
,
3
,
CvType
.
CV_32F
);
v1
.
put
(
0
,
0
,
1.0
,
3.0
,
2.0
);
v2
=
new
Mat
(
1
,
3
,
CvType
.
CV_32F
);
v2
.
put
(
0
,
0
,
2.0
,
1.0
,
3.0
);
}
@Override
protected
void
tearDown
()
throws
Exception
{
gray0
.
release
();
gray1
.
release
();
gray2
.
release
();
gray3
.
release
();
gray9
.
release
();
gray127
.
release
();
gray128
.
release
();
gray255
.
release
();
gray_16u_256
.
release
();
gray_16s_1024
.
release
();
grayRnd
.
release
();
gray0_32f
.
release
();
gray1_32f
.
release
();
gray3_32f
.
release
();
gray9_32f
.
release
();
gray255_32f
.
release
();
grayE_32f
.
release
();
grayE_32f
.
release
();
grayRnd_32f
.
release
();
gray0_32f_1d
.
release
();
gray0_64f
.
release
();
gray0_64f_1d
.
release
();
rgba0
.
release
();
rgba128
.
release
();
rgbLena
.
release
();
grayChess
.
release
();
v1
.
release
();
v2
.
release
();
super
.
tearDown
();
}
@Override
protected
void
runTest
()
throws
Throwable
{
// Do nothing if the precondition does not hold.
if
(
isTestCaseEnabled
)
{
super
.
runTest
();
}
else
{
OpenCVTestRunner
.
Log
(
TAG
+
" :: "
+
"Test case \""
+
this
.
getClass
().
getName
()
+
"\" disabled!"
);
}
}
protected
Mat
getMat
(
int
type
,
double
...
vals
)
{
return
new
Mat
(
matSize
,
matSize
,
type
,
new
Scalar
(
vals
));
}
protected
Mat
makeMask
(
Mat
m
,
double
...
vals
)
{
m
.
submat
(
0
,
m
.
rows
(),
0
,
m
.
cols
()
/
2
).
setTo
(
new
Scalar
(
vals
));
return
m
;
}
public
static
void
fail
(
String
msg
)
{
if
(
msg
==
"Not yet implemented"
&&
passNYI
)
return
;
TestCase
.
fail
(
msg
);
}
public
static
<
E
extends
Number
>
void
assertListEquals
(
List
<
E
>
list1
,
List
<
E
>
list2
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
if
(!
list1
.
isEmpty
())
{
if
(
list1
.
get
(
0
)
instanceof
Float
||
list1
.
get
(
0
)
instanceof
Double
)
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertEquals
(
list1
.
get
(
i
),
list2
.
get
(
i
));
}
public
static
<
E
extends
Number
>
void
assertListEquals
(
List
<
E
>
list1
,
List
<
E
>
list2
,
double
epsilon
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertTrue
(
Math
.
abs
(
list1
.
get
(
i
).
doubleValue
()
-
list2
.
get
(
i
).
doubleValue
())
<=
epsilon
);
}
public
static
<
E
extends
Number
>
void
assertArrayEquals
(
E
[]
ar1
,
E
[]
ar2
,
double
epsilon
)
{
if
(
ar1
.
length
!=
ar2
.
length
)
{
fail
(
"Arrays have different sizes."
);
}
for
(
int
i
=
0
;
i
<
ar1
.
length
;
i
++)
assertEquals
(
ar1
[
i
].
doubleValue
(),
ar2
[
i
].
doubleValue
(),
epsilon
);
//assertTrue(Math.abs(ar1[i].doubleValue() - ar2[i].doubleValue()) <= epsilon);
}
public
static
void
assertArrayEquals
(
double
[]
ar1
,
double
[]
ar2
,
double
epsilon
)
{
if
(
ar1
.
length
!=
ar2
.
length
)
{
fail
(
"Arrays have different sizes."
);
}
for
(
int
i
=
0
;
i
<
ar1
.
length
;
i
++)
assertEquals
(
ar1
[
i
],
ar2
[
i
],
epsilon
);
//assertTrue(Math.abs(ar1[i].doubleValue() - ar2[i].doubleValue()) <= epsilon);
}
public
static
void
assertListMatEquals
(
List
<
Mat
>
list1
,
List
<
Mat
>
list2
,
double
epsilon
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertMatEqual
(
list1
.
get
(
i
),
list2
.
get
(
i
),
epsilon
);
}
public
static
void
assertListPointEquals
(
List
<
Point
>
list1
,
List
<
Point
>
list2
,
double
epsilon
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertPointEquals
(
list1
.
get
(
i
),
list2
.
get
(
i
),
epsilon
);
}
public
static
void
assertArrayPointsEquals
(
Point
[]
vp1
,
Point
[]
vp2
,
double
epsilon
)
{
if
(
vp1
.
length
!=
vp2
.
length
)
{
fail
(
"Arrays have different sizes."
);
}
for
(
int
i
=
0
;
i
<
vp1
.
length
;
i
++)
assertPointEquals
(
vp1
[
i
],
vp2
[
i
],
epsilon
);
}
public
static
void
assertListPoint3Equals
(
List
<
Point3
>
list1
,
List
<
Point3
>
list2
,
double
epsilon
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertPoint3Equals
(
list1
.
get
(
i
),
list2
.
get
(
i
),
epsilon
);
}
public
static
void
assertListRectEquals
(
List
<
Rect
>
list1
,
List
<
Rect
>
list2
)
{
if
(
list1
.
size
()
!=
list2
.
size
())
{
throw
new
UnsupportedOperationException
();
}
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
assertRectEquals
(
list1
.
get
(
i
),
list2
.
get
(
i
));
}
public
static
void
assertRectEquals
(
Rect
expected
,
Rect
actual
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertEquals
(
msg
,
expected
.
x
,
actual
.
x
);
assertEquals
(
msg
,
expected
.
y
,
actual
.
y
);
assertEquals
(
msg
,
expected
.
width
,
actual
.
width
);
assertEquals
(
msg
,
expected
.
height
,
actual
.
height
);
}
public
static
void
assertMatEqual
(
Mat
m1
,
Mat
m2
)
{
compareMats
(
m1
,
m2
,
true
);
}
public
static
void
assertMatNotEqual
(
Mat
m1
,
Mat
m2
)
{
compareMats
(
m1
,
m2
,
false
);
}
public
static
void
assertMatEqual
(
Mat
expected
,
Mat
actual
,
double
eps
)
{
compareMats
(
expected
,
actual
,
eps
,
true
);
}
public
static
void
assertMatNotEqual
(
Mat
expected
,
Mat
actual
,
double
eps
)
{
compareMats
(
expected
,
actual
,
eps
,
false
);
}
public
static
void
assertKeyPointEqual
(
KeyPoint
expected
,
KeyPoint
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertTrue
(
msg
,
Math
.
hypot
(
expected
.
pt
.
x
-
actual
.
pt
.
x
,
expected
.
pt
.
y
-
actual
.
pt
.
y
)
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
size
-
actual
.
size
)
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
angle
-
actual
.
angle
)
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
response
-
actual
.
response
)
<
eps
);
assertEquals
(
msg
,
expected
.
octave
,
actual
.
octave
);
assertEquals
(
msg
,
expected
.
class_id
,
actual
.
class_id
);
}
public
static
void
assertListKeyPointEquals
(
List
<
KeyPoint
>
expected
,
List
<
KeyPoint
>
actual
,
double
epsilon
)
{
assertEquals
(
expected
.
size
(),
actual
.
size
());
for
(
int
i
=
0
;
i
<
expected
.
size
();
i
++)
assertKeyPointEqual
(
expected
.
get
(
i
),
actual
.
get
(
i
),
epsilon
);
}
public
static
void
assertDMatchEqual
(
DMatch
expected
,
DMatch
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertEquals
(
msg
,
expected
.
queryIdx
,
actual
.
queryIdx
);
assertEquals
(
msg
,
expected
.
trainIdx
,
actual
.
trainIdx
);
assertEquals
(
msg
,
expected
.
imgIdx
,
actual
.
imgIdx
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
distance
-
actual
.
distance
)
<
eps
);
}
public
static
void
assertScalarEqual
(
Scalar
expected
,
Scalar
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertTrue
(
msg
,
Math
.
abs
(
expected
.
val
[
0
]
-
actual
.
val
[
0
])
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
val
[
1
]
-
actual
.
val
[
1
])
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
val
[
2
]
-
actual
.
val
[
2
])
<
eps
);
assertTrue
(
msg
,
Math
.
abs
(
expected
.
val
[
3
]
-
actual
.
val
[
3
])
<
eps
);
}
public
static
void
assertArrayDMatchEquals
(
DMatch
[]
expected
,
DMatch
[]
actual
,
double
epsilon
)
{
assertEquals
(
expected
.
length
,
actual
.
length
);
for
(
int
i
=
0
;
i
<
expected
.
length
;
i
++)
assertDMatchEqual
(
expected
[
i
],
actual
[
i
],
epsilon
);
}
public
static
void
assertListDMatchEquals
(
List
<
DMatch
>
expected
,
List
<
DMatch
>
actual
,
double
epsilon
)
{
DMatch
expectedArray
[]
=
expected
.
toArray
(
new
DMatch
[
0
]);
DMatch
actualArray
[]
=
actual
.
toArray
(
new
DMatch
[
0
]);
assertArrayDMatchEquals
(
expectedArray
,
actualArray
,
epsilon
);
}
public
static
void
assertPointEquals
(
Point
expected
,
Point
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertEquals
(
msg
,
expected
.
x
,
actual
.
x
,
eps
);
assertEquals
(
msg
,
expected
.
y
,
actual
.
y
,
eps
);
}
public
static
void
assertSizeEquals
(
Size
expected
,
Size
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertEquals
(
msg
,
expected
.
width
,
actual
.
width
,
eps
);
assertEquals
(
msg
,
expected
.
height
,
actual
.
height
,
eps
);
}
public
static
void
assertPoint3Equals
(
Point3
expected
,
Point3
actual
,
double
eps
)
{
String
msg
=
"expected:<"
+
expected
+
"> but was:<"
+
actual
+
">"
;
assertEquals
(
msg
,
expected
.
x
,
actual
.
x
,
eps
);
assertEquals
(
msg
,
expected
.
y
,
actual
.
y
,
eps
);
assertEquals
(
msg
,
expected
.
z
,
actual
.
z
,
eps
);
}
static
private
void
compareMats
(
Mat
expected
,
Mat
actual
,
boolean
isEqualityMeasured
)
{
if
(
expected
.
type
()
!=
actual
.
type
()
||
expected
.
cols
()
!=
actual
.
cols
()
||
expected
.
rows
()
!=
actual
.
rows
())
{
throw
new
UnsupportedOperationException
(
"Can not compare "
+
expected
+
" and "
+
actual
);
}
if
(
expected
.
depth
()
==
CvType
.
CV_32F
||
expected
.
depth
()
==
CvType
.
CV_64F
)
{
if
(
isEqualityMeasured
)
throw
new
UnsupportedOperationException
(
"Floating-point Mats must not be checked for exact match. Use assertMatEqual(Mat expected, Mat actual, double eps) instead."
);
else
throw
new
UnsupportedOperationException
(
"Floating-point Mats must not be checked for exact match. Use assertMatNotEqual(Mat expected, Mat actual, double eps) instead."
);
}
Mat
diff
=
new
Mat
();
Core
.
absdiff
(
expected
,
actual
,
diff
);
Mat
reshaped
=
diff
.
reshape
(
1
);
int
mistakes
=
Core
.
countNonZero
(
reshaped
);
reshaped
.
release
();
diff
.
release
();
if
(
isEqualityMeasured
)
assertTrue
(
"Mats are different in "
+
mistakes
+
" points"
,
0
==
mistakes
);
else
assertFalse
(
"Mats are equal"
,
0
==
mistakes
);
}
static
private
void
compareMats
(
Mat
expected
,
Mat
actual
,
double
eps
,
boolean
isEqualityMeasured
)
{
if
(
expected
.
type
()
!=
actual
.
type
()
||
expected
.
cols
()
!=
actual
.
cols
()
||
expected
.
rows
()
!=
actual
.
rows
())
{
throw
new
UnsupportedOperationException
(
"Can not compare "
+
expected
+
" and "
+
actual
);
}
Mat
diff
=
new
Mat
();
Core
.
absdiff
(
expected
,
actual
,
diff
);
double
maxDiff
=
Core
.
norm
(
diff
,
Core
.
NORM_INF
);
if
(
isEqualityMeasured
)
assertTrue
(
"Max difference between expected and actiual Mats is "
+
maxDiff
+
", that bigger than "
+
eps
,
Core
.
checkRange
(
diff
,
true
,
0.0
,
eps
));
else
assertFalse
(
"Max difference between expected and actiual Mats is "
+
maxDiff
+
", that less than "
+
eps
,
Core
.
checkRange
(
diff
,
true
,
0.0
,
eps
));
}
protected
static
String
readFile
(
String
path
)
{
try
{
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
path
));
String
line
;
StringBuffer
result
=
new
StringBuffer
();
while
((
line
=
br
.
readLine
())
!=
null
)
{
result
.
append
(
line
);
result
.
append
(
"\n"
);
}
return
result
.
toString
();
}
catch
(
IOException
e
)
{
OpenCVTestRunner
.
Log
(
"Failed to read file \""
+
path
+
"\". Exception is thrown: "
+
e
);
return
null
;
}
}
protected
static
void
writeFile
(
String
path
,
String
content
)
{
FileOutputStream
stream
=
null
;
try
{
stream
=
new
FileOutputStream
(
new
File
(
path
));
FileChannel
fc
=
stream
.
getChannel
();
fc
.
write
(
Charset
.
defaultCharset
().
encode
(
content
));
}
catch
(
IOException
e
)
{
OpenCVTestRunner
.
Log
(
"Failed to write file \""
+
path
+
"\". Exception is thrown: "
+
e
);
}
finally
{
if
(
stream
!=
null
)
try
{
stream
.
close
();
}
catch
(
IOException
e
)
{
OpenCVTestRunner
.
Log
(
"Exception is thrown: "
+
e
);
}
}
}
}
modules/java/java_test/src/org/opencv/test/OpenCVTestRunner.java
0 → 100644
View file @
c49b23d4
package
org
.
opencv
.
test
;
import
java.io.File
;
import
java.io.IOException
;
import
junit.framework.Assert
;
import
org.opencv.core.Mat
;
public
class
OpenCVTestRunner
{
public
static
String
LENA_PATH
=
""
;
public
static
String
CHESS_PATH
=
""
;
public
static
String
LBPCASCADE_FRONTALFACE_PATH
=
""
;
private
static
String
TAG
=
"opencv_test_java"
;
public
static
String
getTempFileName
(
String
extension
)
{
if
(!
extension
.
startsWith
(
"."
))
extension
=
"."
+
extension
;
try
{
File
tmp
=
File
.
createTempFile
(
"OpenCV"
,
extension
);
String
path
=
tmp
.
getAbsolutePath
();
tmp
.
delete
();
return
path
;
}
catch
(
IOException
e
)
{
Log
(
"Failed to get temp file name. Exception is thrown: "
+
e
);
}
return
null
;
}
static
public
void
Log
(
String
message
)
{
System
.
out
.
println
(
TAG
+
" :: "
+
message
);
}
static
public
void
Log
(
Mat
m
)
{
System
.
out
.
println
(
TAG
+
" :: "
+
m
+
"\n "
+
m
.
dump
());
}
public
static
String
getOutputFileName
(
String
name
)
{
return
getTempFileName
(
name
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment