diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index d7211d05bf4472e56e9170e180b76e854ebf05e0..8ee82b82cff2ee60692c61f0be3ae56c50b9fc61 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -247,6 +247,23 @@ architecture. */ CV_EXPORTS_W const String& getBuildInformation(); +/** @brief Returns library version string + +For example "3.4.1-dev". + +@sa getMajorVersion, getMinorVersion, getRevisionVersion +*/ +CV_EXPORTS_W String getVersionString(); + +/** @brief Returns major library version */ +CV_EXPORTS_W int getVersionMajor(); + +/** @brief Returns minor library version */ +CV_EXPORTS_W int getVersionMinor(); + +/** @brief Returns revision field of the library version */ +CV_EXPORTS_W int getVersionRevision(); + /** @brief Returns the number of ticks. The function returns the number of ticks after the certain event (for example, when the machine was diff --git a/modules/core/misc/java/src/java/core+Core.jcode.in b/modules/core/misc/java/src/java/core+Core.jcode.in index 1a0fe21cd8e0aa85cd4b20f74fdc712311aad841..f002d0f5a566f3b416b775e22e347c91d4180073 100644 --- a/modules/core/misc/java/src/java/core+Core.jcode.in +++ b/modules/core/misc/java/src/java/core+Core.jcode.in @@ -1,14 +1,14 @@ // these constants are wrapped inside functions to prevent inlining private static String getVersion() { return "@OPENCV_VERSION@"; } private static String getNativeLibraryName() { return "opencv_java@OPENCV_VERSION_MAJOR@@OPENCV_VERSION_MINOR@@OPENCV_VERSION_PATCH@"; } - private static int getVersionMajor() { return @OPENCV_VERSION_MAJOR@; } - private static int getVersionMinor() { return @OPENCV_VERSION_MINOR@; } - private static int getVersionRevision() { return @OPENCV_VERSION_PATCH@; } - private static String getVersionStatus() { return "@OPENCV_VERSION_STATUS@"; } + private static int getVersionMajorJ() { return @OPENCV_VERSION_MAJOR@; } + private static int getVersionMinorJ() { return @OPENCV_VERSION_MINOR@; } + private static int getVersionRevisionJ() { return @OPENCV_VERSION_PATCH@; } + private static String getVersionStatusJ() { return "@OPENCV_VERSION_STATUS@"; } public static final String VERSION = getVersion(); public static final String NATIVE_LIBRARY_NAME = getNativeLibraryName(); - public static final int VERSION_MAJOR = getVersionMajor(); - public static final int VERSION_MINOR = getVersionMinor(); - public static final int VERSION_REVISION = getVersionRevision(); - public static final String VERSION_STATUS = getVersionStatus(); + public static final int VERSION_MAJOR = getVersionMajorJ(); + public static final int VERSION_MINOR = getVersionMinorJ(); + public static final int VERSION_REVISION = getVersionRevisionJ(); + public static final String VERSION_STATUS = getVersionStatusJ(); diff --git a/modules/core/misc/java/test/CoreTest.java b/modules/core/misc/java/test/CoreTest.java index 549bcd84dde1cee9380cc1947083e741816cd556..c608fb2053a12d36fa1d069b68f95648cd2be61f 100644 --- a/modules/core/misc/java/test/CoreTest.java +++ b/modules/core/misc/java/test/CoreTest.java @@ -2048,4 +2048,11 @@ public class CoreTest extends OpenCVTestCase { assertEquals(5f, val2); } + public void testVersion() { + assertEquals(Core.VERSION_MAJOR, Core.getVersionMajor()); + assertEquals(Core.VERSION_MINOR, Core.getVersionMinor()); + assertEquals(Core.VERSION_REVISION, Core.getVersionRevision()); + assertEquals(Core.VERSION, Core.getVersionString()); + } + } diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index e0113c5b9fa2ce16140db92acc50a6bd4d007ee0..b53f7c9c43682bef419536a12d1f982df45919f2 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -745,6 +745,14 @@ const String& getBuildInformation() return build_info; } +String getVersionString() { return String(CV_VERSION); } + +int getVersionMajor() { return CV_VERSION_MAJOR; } + +int getVersionMinor() { return CV_VERSION_MINOR; } + +int getVersionRevision() { return CV_VERSION_REVISION; } + String format( const char* fmt, ... ) { AutoBuffer<char, 1024> buf; diff --git a/modules/core/test/test_misc.cpp b/modules/core/test/test_misc.cpp index 3f62ed199dbbb9cfc55524b05981a69b99642191..0f083bd9510177ccb1caa34875dfc3f6223445a9 100644 --- a/modules/core/test/test_misc.cpp +++ b/modules/core/test/test_misc.cpp @@ -189,4 +189,14 @@ TEST(Core_Parallel, propagate_exceptions) }, cv::Exception); } +TEST(Core_Version, consistency) +{ + // this test verifies that OpenCV version loaded in runtime + // is the same this test has been built with + EXPECT_EQ(CV_VERSION_MAJOR, cv::getVersionMajor()); + EXPECT_EQ(CV_VERSION_MINOR, cv::getVersionMinor()); + EXPECT_EQ(CV_VERSION_REVISION, cv::getVersionRevision()); + EXPECT_EQ(String(CV_VERSION), cv::getVersionString()); +} + }} // namespace