mirror of https://github.com/opencv/opencv.git
Merge pull request #12054 from alalek:debug_bindings
commit
c331a214d0
4 changed files with 210 additions and 1 deletions
@ -0,0 +1,23 @@ |
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef OPENCV_CORE_BINDINGS_UTILS_HPP |
||||
#define OPENCV_CORE_BINDINGS_UTILS_HPP |
||||
|
||||
namespace cv { namespace utils { |
||||
//! @addtogroup core_utils
|
||||
//! @{
|
||||
|
||||
CV_EXPORTS_W String dumpInputArray(InputArray argument); |
||||
|
||||
CV_EXPORTS_W String dumpInputArrayOfArrays(InputArrayOfArrays argument); |
||||
|
||||
CV_EXPORTS_W String dumpInputOutputArray(InputOutputArray argument); |
||||
|
||||
CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argument); |
||||
|
||||
//! @}
|
||||
}} // namespace
|
||||
|
||||
#endif // OPENCV_CORE_BINDINGS_UTILS_HPP
|
@ -0,0 +1,145 @@ |
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#include "precomp.hpp" |
||||
#include "opencv2/core/bindings_utils.hpp" |
||||
#include <sstream> |
||||
|
||||
namespace cv { namespace utils { |
||||
|
||||
String dumpInputArray(InputArray argument) |
||||
{ |
||||
if (&argument == &noArray()) |
||||
return "InputArray: noArray()"; |
||||
std::ostringstream ss; |
||||
ss << "InputArray:"; |
||||
try { |
||||
do { |
||||
ss << (argument.empty() ? " empty()=true" : " empty()=false"); |
||||
ss << cv::format(" kind=0x%08llx", (long long int)argument.kind()); |
||||
ss << cv::format(" flags=0x%08llx", (long long int)argument.getFlags()); |
||||
if (argument.getObj() == NULL) |
||||
{ |
||||
ss << " obj=NULL"; |
||||
break; // done
|
||||
} |
||||
ss << cv::format(" total(-1)=%lld", (long long int)argument.total(-1)); |
||||
ss << cv::format(" dims(-1)=%d", argument.dims(-1)); |
||||
Size size = argument.size(-1); |
||||
ss << cv::format(" size(-1)=%dx%d", size.width, size.height); |
||||
ss << " type(-1)=" << cv::typeToString(argument.type(-1)); |
||||
} while (0); |
||||
} |
||||
catch (...) |
||||
{ |
||||
ss << " ERROR: exception occured, dump is non-complete"; // need to properly support different kinds
|
||||
} |
||||
return ss.str(); |
||||
} |
||||
|
||||
CV_EXPORTS_W String dumpInputArrayOfArrays(InputArrayOfArrays argument) |
||||
{ |
||||
if (&argument == &noArray()) |
||||
return "InputArrayOfArrays: noArray()"; |
||||
std::ostringstream ss; |
||||
ss << "InputArrayOfArrays:"; |
||||
try { |
||||
do { |
||||
ss << (argument.empty() ? " empty()=true" : " empty()=false"); |
||||
ss << cv::format(" kind=0x%08llx", (long long int)argument.kind()); |
||||
ss << cv::format(" flags=0x%08llx", (long long int)argument.getFlags()); |
||||
if (argument.getObj() == NULL) |
||||
{ |
||||
ss << " obj=NULL"; |
||||
break; // done
|
||||
} |
||||
ss << cv::format(" total(-1)=%lld", (long long int)argument.total(-1)); |
||||
ss << cv::format(" dims(-1)=%d", argument.dims(-1)); |
||||
Size size = argument.size(-1); |
||||
ss << cv::format(" size(-1)=%dx%d", size.width, size.height); |
||||
if (argument.total(-1) > 0) |
||||
{ |
||||
ss << " type(0)=" << cv::typeToString(argument.type(0)); |
||||
ss << cv::format(" dims(0)=%d", argument.dims(0)); |
||||
size = argument.size(0); |
||||
ss << cv::format(" size(0)=%dx%d", size.width, size.height); |
||||
ss << " type(0)=" << cv::typeToString(argument.type(0)); |
||||
} |
||||
} while (0); |
||||
} |
||||
catch (...) |
||||
{ |
||||
ss << " ERROR: exception occured, dump is non-complete"; // need to properly support different kinds
|
||||
} |
||||
return ss.str(); |
||||
} |
||||
|
||||
CV_EXPORTS_W String dumpInputOutputArray(InputOutputArray argument) |
||||
{ |
||||
if (&argument == &noArray()) |
||||
return "InputOutputArray: noArray()"; |
||||
std::ostringstream ss; |
||||
ss << "InputOutputArray:"; |
||||
try { |
||||
do { |
||||
ss << (argument.empty() ? " empty()=true" : " empty()=false"); |
||||
ss << cv::format(" kind=0x%08llx", (long long int)argument.kind()); |
||||
ss << cv::format(" flags=0x%08llx", (long long int)argument.getFlags()); |
||||
if (argument.getObj() == NULL) |
||||
{ |
||||
ss << " obj=NULL"; |
||||
break; // done
|
||||
} |
||||
ss << cv::format(" total(-1)=%lld", (long long int)argument.total(-1)); |
||||
ss << cv::format(" dims(-1)=%d", argument.dims(-1)); |
||||
Size size = argument.size(-1); |
||||
ss << cv::format(" size(-1)=%dx%d", size.width, size.height); |
||||
ss << " type(-1)=" << cv::typeToString(argument.type(-1)); |
||||
} while (0); |
||||
} |
||||
catch (...) |
||||
{ |
||||
ss << " ERROR: exception occured, dump is non-complete"; // need to properly support different kinds
|
||||
} |
||||
return ss.str(); |
||||
} |
||||
|
||||
CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argument) |
||||
{ |
||||
if (&argument == &noArray()) |
||||
return "InputOutputArrayOfArrays: noArray()"; |
||||
std::ostringstream ss; |
||||
ss << "InputOutputArrayOfArrays:"; |
||||
try { |
||||
do { |
||||
ss << (argument.empty() ? " empty()=true" : " empty()=false"); |
||||
ss << cv::format(" kind=0x%08llx", (long long int)argument.kind()); |
||||
ss << cv::format(" flags=0x%08llx", (long long int)argument.getFlags()); |
||||
if (argument.getObj() == NULL) |
||||
{ |
||||
ss << " obj=NULL"; |
||||
break; // done
|
||||
} |
||||
ss << cv::format(" total(-1)=%lld", (long long int)argument.total(-1)); |
||||
ss << cv::format(" dims(-1)=%d", argument.dims(-1)); |
||||
Size size = argument.size(-1); |
||||
ss << cv::format(" size(-1)=%dx%d", size.width, size.height); |
||||
if (argument.total(-1) > 0) |
||||
{ |
||||
ss << " type(0)=" << cv::typeToString(argument.type(0)); |
||||
ss << cv::format(" dims(0)=%d", argument.dims(0)); |
||||
size = argument.size(0); |
||||
ss << cv::format(" size(0)=%dx%d", size.width, size.height); |
||||
ss << " type(0)=" << cv::typeToString(argument.type(0)); |
||||
} |
||||
} while (0); |
||||
} |
||||
catch (...) |
||||
{ |
||||
ss << " ERROR: exception occured, dump is non-complete"; // need to properly support different kinds
|
||||
} |
||||
return ss.str(); |
||||
} |
||||
|
||||
}} // namespace
|
Loading…
Reference in new issue