Merge remote-tracking branch 'upstream/3.4' into merge-3.4
authorAlexander Alekhin <alexander.alekhin@intel.com>
Mon, 9 Jul 2018 16:31:45 +0000 (19:31 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Mon, 9 Jul 2018 16:44:51 +0000 (19:44 +0300)
22 files changed:
1  2 
doc/tutorials/features2d/akaze_matching/akaze_matching.markdown
modules/calib3d/src/calibinit.cpp
modules/calib3d/src/precomp.hpp
modules/core/include/opencv2/core/cvdef.h
modules/core/include/opencv2/core/utility.hpp
modules/core/src/arithm.cpp
modules/core/src/check.cpp
modules/core/src/count_non_zero.cpp
modules/core/src/opengl.cpp
modules/core/src/system.cpp
modules/features2d/src/fast.cpp
modules/imgproc/src/canny.cpp
modules/imgproc/src/corner.cpp
modules/imgproc/src/drawing.cpp
modules/imgproc/src/pyramids.cpp
modules/imgproc/src/smooth.cpp
modules/ml/src/ann_mlp.cpp
modules/ml/src/data.cpp
modules/ml/src/svm.cpp
modules/objdetect/src/cascadedetect.cpp
modules/video/src/lkpyramid.cpp
modules/videoio/src/videoio_registry.cpp

@@@ -31,7 -30,29 +30,29 @@@ You can find the images (*graf1.png*, *
  
  ### Source Code
  
- @include cpp/tutorial_code/features2D/AKAZE_match.cpp
+ @add_toggle_cpp
+ -   **Downloadable code**: Click
 -    [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/cpp/tutorial_code/features2D/AKAZE_match.cpp)
++    [here](https://raw.githubusercontent.com/opencv/opencv/master/samples/cpp/tutorial_code/features2D/AKAZE_match.cpp)
+ -   **Code at glance:**
+     @include samples/cpp/tutorial_code/features2D/AKAZE_match.cpp
+ @end_toggle
+ @add_toggle_java
+ -   **Downloadable code**: Click
 -    [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java)
++    [here](https://raw.githubusercontent.com/opencv/opencv/master/samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java)
+ -   **Code at glance:**
+     @include samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java
+ @end_toggle
+ @add_toggle_python
+ -   **Downloadable code**: Click
 -    [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py)
++    [here](https://raw.githubusercontent.com/opencv/opencv/master/samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py)
+ -   **Code at glance:**
+     @include samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py
+ @end_toggle
  
  ### Explanation
  
@@@ -2231,55 -2175,26 +2175,16 @@@ void drawChessboardCorners( InputOutput
      }
  }
  
- bool cv::findChessboardCorners( InputArray _image, Size patternSize,
-                             OutputArray corners, int flags )
+ static int quiet_error(int /*status*/, const char* /*func_name*/,
+                        const char* /*err_msg*/, const char* /*file_name*/,
+                        int /*line*/, void* /*userdata*/)
  {
-     CV_INSTRUMENT_REGION()
-     int count = patternSize.area()*2;
-     std::vector<Point2f> tmpcorners(count+1);
-     Mat image = _image.getMat(); CvMat c_image = image;
-     bool ok = cvFindChessboardCorners(&c_image, patternSize,
-         (CvPoint2D32f*)&tmpcorners[0], &count, flags ) > 0;
-     if( count > 0 )
-     {
-         tmpcorners.resize(count);
-         Mat(tmpcorners).copyTo(corners);
-     }
-     else
-         corners.release();
-     return ok;
- }
- namespace
- {
- int quiet_error(int /*status*/, const char* /*func_name*/,
-                                        const char* /*err_msg*/, const char* /*file_name*/,
-                                        int /*line*/, void* /*userdata*/ )
- {
-   return 0;
- }
- }
- void cv::drawChessboardCorners( InputOutputArray _image, Size patternSize,
-                             InputArray _corners,
-                             bool patternWasFound )
- {
-     CV_INSTRUMENT_REGION()
-     Mat corners = _corners.getMat();
-     if( corners.empty() )
-         return;
-     Mat image = _image.getMat(); CvMat c_image = image;
-     int nelems = corners.checkVector(2, CV_32F, true);
-     CV_Assert(nelems >= 0);
-     cvDrawChessboardCorners( &c_image, patternSize, corners.ptr<CvPoint2D32f>(),
-                              nelems, patternWasFound );
+     return 0;
  }
  
- bool cv::findCirclesGrid( InputArray _image, Size patternSize,
 -bool findCirclesGrid(InputArray image, Size patternSize,
 -                     OutputArray centers, int flags,
 -                     const Ptr<FeatureDetector> &blobDetector,
 -                     CirclesGridFinderParameters parameters)
 -{
 -    CirclesGridFinderParameters2 parameters2;
 -    *((CirclesGridFinderParameters*)&parameters2) = parameters;
 -    return cv::findCirclesGrid2(image, patternSize, centers, flags, blobDetector, parameters2);
 -}
 -
 -bool findCirclesGrid2(InputArray _image, Size patternSize,
 -                      OutputArray _centers, int flags, const Ptr<FeatureDetector> &blobDetector,
 -                      CirclesGridFinderParameters2 parameters)
++bool findCirclesGrid( InputArray _image, Size patternSize,
 +                          OutputArray _centers, int flags, const Ptr<FeatureDetector> &blobDetector,
 +                          const CirclesGridFinderParameters& parameters_)
  {
      CV_INSTRUMENT_REGION()
  
      return false;
  }
  
- bool cv::findCirclesGrid( InputArray _image, Size patternSize,
-                           OutputArray _centers, int flags, const Ptr<FeatureDetector> &blobDetector)
+ bool findCirclesGrid(InputArray _image, Size patternSize,
+                      OutputArray _centers, int flags, const Ptr<FeatureDetector> &blobDetector)
  {
 -    return cv::findCirclesGrid2(_image, patternSize, _centers, flags, blobDetector, CirclesGridFinderParameters2());
 +    return cv::findCirclesGrid(_image, patternSize, _centers, flags, blobDetector, CirclesGridFinderParameters());
  }
  
+ } // namespace
  /* End of file. */
Simple merge
@@@ -251,10 -251,11 +251,11 @@@ typedef union Cv64su
  }
  Cv64suf;
  
 -#define OPENCV_ABI_COMPATIBILITY 300
 +#define OPENCV_ABI_COMPATIBILITY 400
  
  #ifdef __OPENCV_BUILD
 -#  define DISABLE_OPENCV_24_COMPATIBILITY
 +#  define DISABLE_OPENCV_3_COMPATIBILITY
+ #  define OPENCV_DISABLE_DEPRECATED_COMPATIBILITY
  #endif
  
  #ifdef CVAPI_EXPORTS
Simple merge
Simple merge
@@@ -393,60 -393,25 +393,60 @@@ void cv::findNonZero( InputArray _src, 
      CV_INSTRUMENT_REGION()
  
      Mat src = _src.getMat();
 -    CV_Assert( src.type() == CV_8UC1 );
 -    int n = countNonZero(src);
 -    if( n == 0 )
 +    CV_Assert( src.channels() == 1 && src.dims == 2 );
 +
 +    int depth = src.depth();
 +    std::vector<Point> idxvec;
 +    int rows = src.rows, cols = src.cols;
 +    AutoBuffer<int> buf_(cols + 1);
-     int* buf = buf_;
++    int* buf = buf_.data();
 +
 +    for( int i = 0; i < rows; i++ )
      {
 -        _idx.release();
 -        return;
 +        int j, k = 0;
 +        const uchar* ptr8 = src.ptr(i);
 +        if( depth == CV_8U || depth == CV_8S )
 +        {
 +            for( j = 0; j < cols; j++ )
 +                if( ptr8[j] != 0 ) buf[k++] = j;
 +        }
 +        else if( depth == CV_16U || depth == CV_16S )
 +        {
 +            const ushort* ptr16 = (const ushort*)ptr8;
 +            for( j = 0; j < cols; j++ )
 +                if( ptr16[j] != 0 ) buf[k++] = j;
 +        }
 +        else if( depth == CV_32S )
 +        {
 +            const int* ptr32s = (const int*)ptr8;
 +            for( j = 0; j < cols; j++ )
 +                if( ptr32s[j] != 0 ) buf[k++] = j;
 +        }
 +        else if( depth == CV_32F )
 +        {
 +            const float* ptr32f = (const float*)ptr8;
 +            for( j = 0; j < cols; j++ )
 +                if( ptr32f[j] != 0 ) buf[k++] = j;
 +        }
 +        else
 +        {
 +            const double* ptr64f = (const double*)ptr8;
 +            for( j = 0; j < cols; j++ )
 +                if( ptr64f[j] != 0 ) buf[k++] = j;
 +        }
 +
 +        if( k > 0 )
 +        {
 +            size_t sz = idxvec.size();
 +            idxvec.resize(sz + k);
 +            for( j = 0; j < k; j++ )
 +                idxvec[sz + j] = Point(buf[j], i);
 +        }
      }
 -    if( _idx.kind() == _InputArray::MAT && !_idx.getMatRef().isContinuous() )
 +
 +    if( idxvec.empty() || (_idx.kind() == _InputArray::MAT && !_idx.getMatRef().isContinuous()) )
          _idx.release();
 -    _idx.create(n, 1, CV_32SC2);
 -    Mat idx = _idx.getMat();
 -    CV_Assert(idx.isContinuous());
 -    Point* idx_ptr = idx.ptr<Point>();
  
 -    for( int i = 0; i < src.rows; i++ )
 -    {
 -        const uchar* bin_ptr = src.ptr(i);
 -        for( int j = 0; j < src.cols; j++ )
 -            if( bin_ptr[j] )
 -                *idx_ptr++ = Point(j, i);
 -    }
 +    if( !idxvec.empty() )
 +        Mat(idxvec).copyTo(_idx);
  }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -60,9 -60,14 +60,9 @@@ static void calcSharrDeriv(const cv::Ma
      CV_Assert(depth == CV_8U);
      dst.create(rows, cols, CV_MAKETYPE(DataType<deriv_type>::depth, cn*2));
  
 -#ifdef HAVE_TEGRA_OPTIMIZATION
 -    if (tegra::useTegra() && tegra::calcSharrDeriv(src, dst))
 -        return;
 -#endif
 -
      int x, y, delta = (int)alignSize((cols + 2)*cn, 16);
      AutoBuffer<deriv_type> _tempBuf(delta*2 + 64);
-     deriv_type *trow0 = alignPtr(_tempBuf + cn, 16), *trow1 = alignPtr(trow0 + delta, 16);
+     deriv_type *trow0 = alignPtr(_tempBuf.data() + cn, 16), *trow1 = alignPtr(trow0 + delta, 16);
  
  #if CV_SIMD128
      v_int16x8 c3 = v_setall_s16(3), c10 = v_setall_s16(10);