When a cluster is empty for KMeans, it's better to give it the point from another cluster j that is the furthest one from center j.
converted necessary files for python3 compatibility using 2to3
fixed relative imports in Jinja for python3
explicit string encoding when writing to file in python3
added epsilon value to weights in the MergeMertens in order to avoid zero weights for pixels from uniformly filled areas of image
added test for correct handling of uniforma areas in the MergeMertens
fixed rotated rectangle (center instead of corner)
Merged upstream master
Implicit CUDA and OpenCL control for module definition added.

Feature allows to exclude CUDA or OpenCL optimizations at all even CUDA is used
on build. Exclusion of CUDA or OpenCL cut unwanted dependencies.
fix: use "cvAlloc" wrapper function for malloc.
Fixed an issue with weight assignment causing the resulting GMM weights to be unsorted in BackgroundSubtractorMOG2
Fix for bug #3599: cv::FileStorage does not work for std::vector of user-defined struct.
fix: use "cvAlloc" wrapper function for malloc.
fixed  h / s ranges in histogram_calculation tutorial

literalinclude

literalinclude, dropped :lines:
OpenCV_MODULES_SUFFIX variable added to OpenCVConfig.cmake to enable custom module configurations.
Merge pull request #2458 from asmorkalov:android_cmake_opencv_modules_suffix
Merge pull request #2460 from berak:b_3598_24
Fix problems on Intel HD graphics
minor doc fix
remove intel guard since the code is 2 times faster on AMD too