diff --git a/modules/structured_light/include/opencv2/structured_light/structured_light.hpp b/modules/structured_light/include/opencv2/structured_light/structured_light.hpp index a970c4164..5e413ac69 100644 --- a/modules/structured_light/include/opencv2/structured_light/structured_light.hpp +++ b/modules/structured_light/include/opencv2/structured_light/structured_light.hpp @@ -78,7 +78,7 @@ class CV_EXPORTS_W StructuredLightPattern : public virtual Algorithm @note All the images must be at the same resolution. */ CV_WRAP - virtual bool decode( InputArrayOfArrays patternImages, OutputArray disparityMap, + virtual bool decode( const std::vector< std::vector >& patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages = noArray(), InputArrayOfArrays whiteImages = noArray(), int flags = DECODE_3D_UNDERWORLD ) const = 0; diff --git a/modules/structured_light/src/graycodepattern.cpp b/modules/structured_light/src/graycodepattern.cpp index dceaec9fb..5bd6862cb 100644 --- a/modules/structured_light/src/graycodepattern.cpp +++ b/modules/structured_light/src/graycodepattern.cpp @@ -56,7 +56,7 @@ class CV_EXPORTS_W GrayCodePattern_Impl : public GrayCodePattern bool generate( OutputArrayOfArrays patternImages ); // Decodes the gray code pattern, computing the disparity map - bool decode( InputArrayOfArrays patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages = noArray(), + bool decode( const std::vector< std::vector >& patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages = noArray(), InputArrayOfArrays whiteImages = noArray(), int flags = DECODE_3D_UNDERWORLD ) const; // Returns the number of pattern images for the graycode pattern @@ -209,10 +209,10 @@ bool GrayCodePattern_Impl::generate( OutputArrayOfArrays pattern ) return true; } -bool GrayCodePattern_Impl::decode( InputArrayOfArrays patternImages, OutputArray disparityMap, +bool GrayCodePattern_Impl::decode( const std::vector< std::vector >& patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages, InputArrayOfArrays whitheImages, int flags ) const { - std::vector >& acquired_pattern = *( std::vector >* ) patternImages.getObj(); + const std::vector >& acquired_pattern = patternImages; if( flags == DECODE_3D_UNDERWORLD ) { diff --git a/modules/structured_light/src/sinusoidalpattern.cpp b/modules/structured_light/src/sinusoidalpattern.cpp index 926653d11..22e3f1f16 100644 --- a/modules/structured_light/src/sinusoidalpattern.cpp +++ b/modules/structured_light/src/sinusoidalpattern.cpp @@ -56,7 +56,7 @@ public: // Generate sinusoidal patterns bool generate( OutputArrayOfArrays patternImages ); - bool decode( InputArrayOfArrays patternImages, OutputArray disparityMap, + bool decode( const std::vector< std::vector >& patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages = noArray(), InputArrayOfArrays whiteImages = noArray(), int flags = 0 ) const; @@ -258,7 +258,7 @@ bool SinusoidalPatternProfilometry_Impl::generate( OutputArrayOfArrays pattern ) return true; } -bool SinusoidalPatternProfilometry_Impl::decode( InputArrayOfArrays patternImages, +bool SinusoidalPatternProfilometry_Impl::decode(const std::vector< std::vector >& patternImages, OutputArray disparityMap, InputArrayOfArrays blackImages, InputArrayOfArrays whiteImages, int flags ) const