diff --git a/modules/objdetect/doc/cascade_classification.rst b/modules/objdetect/doc/cascade_classification.rst
index a00bdc933a8cac824dfe9258e2b02ab81eb56219..eb07a6c8f7245c0b30dd2acb0f7aab0bd6553d0b 100644
--- a/modules/objdetect/doc/cascade_classification.rst
+++ b/modules/objdetect/doc/cascade_classification.rst
@@ -189,7 +189,6 @@ CascadeClassifier::detectMultiScale
 Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles.
 
 .. ocv:function:: void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
-.. ocv:function:: void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects, vector<int>& weights, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
 
 .. ocv:pyfunction:: cv2.CascadeClassifier.detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) -> objects
 .. ocv:pyfunction:: cv2.CascadeClassifier.detectMultiScale(image, rejectLevels, levelWeights[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize[, outputRejectLevels]]]]]]) -> objects
@@ -204,8 +203,6 @@ Detects objects of different sizes in the input image. The detected objects are
 
     :param objects: Vector of rectangles where each rectangle contains the detected object.
 
-    :param weights: Vector of weights of the corresponding objects. Weight is the number of neighboring positively classified rectangles that were joined into one object.
-
     :param scaleFactor: Parameter specifying how much the image size is reduced at each image scale.
 
     :param minNeighbors: Parameter specifying how many neighbors each candidate rectangle should have to retain it.
diff --git a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp
index 7924b67e5d078bcc9e91fa6aa3f4b8720208a072..8d7efb0ba4e26a34b788100be3b5bb3dc027709f 100644
--- a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp
+++ b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp
@@ -382,14 +382,6 @@ public:
                                    Size minSize=Size(),
                                    Size maxSize=Size() );
 
-    CV_WRAP virtual void detectMultiScale( const Mat& image,
-                                   CV_OUT vector<Rect>& objects,
-                                   vector<int>& weights,
-                                   double scaleFactor=1.1,
-                                   int minNeighbors=3, int flags=0,
-                                   Size minSize=Size(),
-                                   Size maxSize=Size() );
-
     CV_WRAP virtual void detectMultiScale( const Mat& image,
                                    CV_OUT vector<Rect>& objects,
                                    vector<int>& rejectLevels,
@@ -398,8 +390,7 @@ public:
                                    int minNeighbors=3, int flags=0,
                                    Size minSize=Size(),
                                    Size maxSize=Size(),
-                                   bool outputRejectLevels=false,
-                                   bool outputWeights=false );
+                                   bool outputRejectLevels=false );
 
 
     bool isOldFormatCascade() const;
diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp
index 341ef2a0d6765013b11ea8559f68bbfee5015ae4..9e78dce243ffa9df98dfefc1f0e96551f9402d8f 100644
--- a/modules/objdetect/src/cascadedetect.cpp
+++ b/modules/objdetect/src/cascadedetect.cpp
@@ -1023,7 +1023,6 @@ public:
 };
 
 struct getRect { Rect operator ()(const CvAvgComp& e) const { return e.rect; } };
-struct getNeighbors { int operator ()(const CvAvgComp& e) const { return e.neighbors; } };
 
 
 bool CascadeClassifier::detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
@@ -1093,12 +1092,11 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& object
                                           vector<double>& levelWeights,
                                           double scaleFactor, int minNeighbors,
                                           int flags, Size minObjectSize, Size maxObjectSize,
-                                          bool outputRejectLevels, bool outputWeights )
+                                          bool outputRejectLevels )
 {
     const double GROUP_EPS = 0.2;
 
     CV_Assert( scaleFactor > 1 && image.depth() == CV_8U );
-    CV_Assert( !( outputRejectLevels && outputWeights ) );
 
     if( empty() )
         return;
@@ -1113,12 +1111,6 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& object
         Seq<CvAvgComp>(_objects).copyTo(vecAvgComp);
         objects.resize(vecAvgComp.size());
         std::transform(vecAvgComp.begin(), vecAvgComp.end(), objects.begin(), getRect());
-        if( outputWeights )
-        {
-            rejectLevels.resize(vecAvgComp.size());
-            std::transform(vecAvgComp.begin(), vecAvgComp.end(), rejectLevels.begin(),
-                    getNeighbors());
-        }
         return;
     }
 
@@ -1191,10 +1183,6 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& object
     {
         groupRectangles( objects, rejectLevels, levelWeights, minNeighbors, GROUP_EPS );
     }
-    else if( outputWeights )
-    {
-        groupRectangles( objects, rejectLevels, minNeighbors, GROUP_EPS );
-    }
     else
     {
         groupRectangles( objects, minNeighbors, GROUP_EPS );
@@ -1211,16 +1199,6 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& object
         minNeighbors, flags, minObjectSize, maxObjectSize, false );
 }
 
-void CascadeClassifier::detectMultiScale( const Mat& image, CV_OUT vector<Rect>& objects,
-                                          vector<int>& weights, double scaleFactor,
-                                          int minNeighbors, int flags, Size minObjectSize,
-                                          Size maxObjectSize )
-{
-    vector<double> fakeLevelWeights;
-    detectMultiScale( image, objects, weights, fakeLevelWeights, scaleFactor,
-            minNeighbors, flags, minObjectSize, maxObjectSize, false, true );
-}
-
 bool CascadeClassifier::Data::read(const FileNode &root)
 {
     static const float THRESHOLD_EPS = 1e-5f;