diff --git a/modules/core/include/opencv2/core.hpp b/modules/core/include/opencv2/core.hpp index 2e47658f73..2b5a5ed85e 100644 --- a/modules/core/include/opencv2/core.hpp +++ b/modules/core/include/opencv2/core.hpp @@ -2170,6 +2170,14 @@ is much faster to use this function to retrieve the generator and then use RNG:: */ CV_EXPORTS RNG& theRNG(); +/** @brief Sets state of default random number generator. + +The function sets state of default random number generator to custom value. +@param seed new state for default random number generator +@sa RNG, randu, randn +*/ +CV_EXPORTS_W void setRNGSeed(int seed); + /** @brief Generates a single uniformly-distributed random number or an array of random numbers. Non-template variant of the function fills the matrix dst with uniformly-distributed diff --git a/modules/core/src/rand.cpp b/modules/core/src/rand.cpp index 9d95243828..9bfc91d931 100644 --- a/modules/core/src/rand.cpp +++ b/modules/core/src/rand.cpp @@ -734,6 +734,12 @@ cv::RNG& cv::theRNG() return getCoreTlsData().get()->rng; } +void cv::setRNGSeed(int seed) +{ + theRNG() = RNG(static_cast(seed)); +} + + void cv::randu(InputOutputArray dst, InputArray low, InputArray high) { theRNG().fill(dst, RNG::UNIFORM, low, high); diff --git a/modules/python/test/tests_common.py b/modules/python/test/tests_common.py index 3a636b255c..67b5bea2f7 100644 --- a/modules/python/test/tests_common.py +++ b/modules/python/test/tests_common.py @@ -42,6 +42,7 @@ class NewOpenCVTests(unittest.TestCase): return self.image_cache[filename] def setUp(self): + cv2.setRNGSeed(10) self.image_cache = {} def hashimg(self, im):