mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Merge branch 4.x
This commit is contained in:
@@ -219,6 +219,12 @@ AsyncArray testAsyncException()
|
||||
return p.getArrayResult();
|
||||
}
|
||||
|
||||
namespace nested {
|
||||
CV_WRAP static inline bool testEchoBooleanFunction(bool flag) {
|
||||
return flag;
|
||||
}
|
||||
} // namespace nested
|
||||
|
||||
namespace fs {
|
||||
CV_EXPORTS_W cv::String getCacheDirectoryForDownloads();
|
||||
} // namespace fs
|
||||
|
||||
@@ -48,16 +48,19 @@
|
||||
#include "opencv2/core/types_c.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
# ifdef _MSC_VER
|
||||
/* disable warning C4190: 'function' has C-linkage specified, but returns UDT 'typename'
|
||||
which is incompatible with C
|
||||
/* disable MSVC warning C4190 / clang-cl -Wreturn-type-c-linkage:
|
||||
'function' has C-linkage specified, but returns UDT 'typename'
|
||||
which is incompatible with C
|
||||
|
||||
It is OK to disable it because we only extend few plain structures with
|
||||
C++ constructors for simpler interoperability with C++ API of the library
|
||||
*/
|
||||
# pragma warning(disable:4190)
|
||||
# elif defined __clang__ && __clang_major__ >= 3
|
||||
# if defined(__clang__)
|
||||
// handle clang on Linux and clang-cl (i. e. clang on Windows) first
|
||||
# pragma GCC diagnostic ignored "-Wreturn-type-c-linkage"
|
||||
# elif defined(_MSC_VER)
|
||||
// then handle MSVC
|
||||
# pragma warning(disable:4190)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -924,7 +924,7 @@ public:
|
||||
INTERPROCESS = 0x04 /**< Event is suitable for interprocess use. DisableTiming must be set */
|
||||
};
|
||||
|
||||
CV_WRAP explicit Event(Event::CreateFlags flags = Event::CreateFlags::DEFAULT);
|
||||
CV_WRAP explicit Event(const Event::CreateFlags flags = Event::CreateFlags::DEFAULT);
|
||||
|
||||
//! records an event
|
||||
CV_WRAP void record(Stream& stream = Stream::Null());
|
||||
@@ -946,6 +946,7 @@ private:
|
||||
|
||||
friend struct EventAccessor;
|
||||
};
|
||||
CV_ENUM_FLAGS(Event::CreateFlags)
|
||||
|
||||
//! @} cudacore_struct
|
||||
|
||||
|
||||
@@ -444,7 +444,16 @@ CV_EXPORTS InputOutputArray noArray();
|
||||
|
||||
/////////////////////////////////// MatAllocator //////////////////////////////////////
|
||||
|
||||
//! Usage flags for allocator
|
||||
/** @brief Usage flags for allocator
|
||||
|
||||
@warning All flags except `USAGE_DEFAULT` are experimental.
|
||||
|
||||
@warning For the OpenCL allocator, `USAGE_ALLOCATE_SHARED_MEMORY` depends on
|
||||
OpenCV's optional, experimental integration with OpenCL SVM. To enable this
|
||||
integration, build OpenCV using the `WITH_OPENCL_SVM=ON` CMake option and, at
|
||||
runtime, call `cv::ocl::Context::getDefault().setUseSVM(true);` or similar
|
||||
code. Note that SVM is incompatible with OpenCL 1.x.
|
||||
*/
|
||||
enum UMatUsageFlags
|
||||
{
|
||||
USAGE_DEFAULT = 0,
|
||||
@@ -2076,7 +2085,7 @@ public:
|
||||
|
||||
Mat_<Pixel> image = Mat::zeros(3, sizes, CV_8UC3);
|
||||
|
||||
image.forEach<Pixel>([&](Pixel& pixel, const int position[]) -> void {
|
||||
image.forEach<Pixel>([](Pixel& pixel, const int position[]) -> void {
|
||||
pixel.x = position[0];
|
||||
pixel.y = position[1];
|
||||
pixel.z = position[2];
|
||||
|
||||
@@ -309,8 +309,8 @@ public:
|
||||
READ = 0, //!< value, open the file for reading
|
||||
WRITE = 1, //!< value, open the file for writing
|
||||
APPEND = 2, //!< value, open the file for appending
|
||||
MEMORY = 4, //!< flag, read data from source or write data to the internal buffer (which is
|
||||
//!< returned by FileStorage::release)
|
||||
MEMORY = 4, /**< flag, read data from source or write data to the internal buffer (which is
|
||||
returned by FileStorage::release) */
|
||||
FORMAT_MASK = (7<<3), //!< mask for format flags
|
||||
FORMAT_AUTO = 0, //!< flag, auto format
|
||||
FORMAT_XML = (1<<3), //!< flag, XML format
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
// 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_FP_CONTROL_UTILS_PRIVATE_HPP
|
||||
#define OPENCV_CORE_FP_CONTROL_UTILS_PRIVATE_HPP
|
||||
|
||||
#include "fp_control_utils.hpp"
|
||||
|
||||
#if OPENCV_SUPPORTS_FP_DENORMALS_HINT == 0
|
||||
// disabled
|
||||
#elif defined(OPENCV_IMPL_FP_HINTS)
|
||||
// custom
|
||||
#elif defined(OPENCV_IMPL_FP_HINTS_X86)
|
||||
// custom
|
||||
#elif defined(__SSE__) || defined(__SSE2__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)
|
||||
#include <xmmintrin.h>
|
||||
#define OPENCV_IMPL_FP_HINTS_X86 1
|
||||
#define OPENCV_IMPL_FP_HINTS 1
|
||||
#endif
|
||||
|
||||
#ifndef OPENCV_IMPL_FP_HINTS
|
||||
#define OPENCV_IMPL_FP_HINTS 0
|
||||
#endif
|
||||
#ifndef OPENCV_IMPL_FP_HINTS_X86
|
||||
#define OPENCV_IMPL_FP_HINTS_X86 0
|
||||
#endif
|
||||
|
||||
#endif // OPENCV_CORE_FP_CONTROL_UTILS_PRIVATE_HPP
|
||||
@@ -0,0 +1,69 @@
|
||||
// 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_FP_CONTROL_UTILS_HPP
|
||||
#define OPENCV_CORE_FP_CONTROL_UTILS_HPP
|
||||
|
||||
namespace cv {
|
||||
|
||||
namespace details {
|
||||
|
||||
struct FPDenormalsModeState
|
||||
{
|
||||
uint32_t reserved[16]; // 64-bytes
|
||||
}; // FPDenormalsModeState
|
||||
|
||||
CV_EXPORTS void setFPDenormalsIgnoreHint(bool ignore, CV_OUT FPDenormalsModeState& state);
|
||||
CV_EXPORTS int saveFPDenormalsState(CV_OUT FPDenormalsModeState& state);
|
||||
CV_EXPORTS bool restoreFPDenormalsState(const FPDenormalsModeState& state);
|
||||
|
||||
class FPDenormalsIgnoreHintScope
|
||||
{
|
||||
public:
|
||||
inline explicit FPDenormalsIgnoreHintScope(bool ignore = true)
|
||||
{
|
||||
details::setFPDenormalsIgnoreHint(ignore, saved_state);
|
||||
}
|
||||
|
||||
inline explicit FPDenormalsIgnoreHintScope(const FPDenormalsModeState& state)
|
||||
{
|
||||
details::saveFPDenormalsState(saved_state);
|
||||
details::restoreFPDenormalsState(state);
|
||||
}
|
||||
|
||||
inline ~FPDenormalsIgnoreHintScope()
|
||||
{
|
||||
details::restoreFPDenormalsState(saved_state);
|
||||
}
|
||||
|
||||
protected:
|
||||
FPDenormalsModeState saved_state;
|
||||
}; // FPDenormalsIgnoreHintScope
|
||||
|
||||
class FPDenormalsIgnoreHintScopeNOOP
|
||||
{
|
||||
public:
|
||||
inline FPDenormalsIgnoreHintScopeNOOP(bool ignore = true) { CV_UNUSED(ignore); }
|
||||
inline FPDenormalsIgnoreHintScopeNOOP(const FPDenormalsModeState& state) { CV_UNUSED(state); }
|
||||
inline ~FPDenormalsIgnoreHintScopeNOOP() { }
|
||||
}; // FPDenormalsIgnoreHintScopeNOOP
|
||||
|
||||
} // namespace details
|
||||
|
||||
|
||||
// Should depend on target compilation architecture only
|
||||
// Note: previously added archs should NOT be removed to preserve ABI compatibility
|
||||
#if defined(OPENCV_SUPPORTS_FP_DENORMALS_HINT)
|
||||
// preserve configuration overloading through ports
|
||||
#elif defined(__i386__) || defined(__x86_64__) || defined(_M_X64) || defined(_X86_)
|
||||
typedef details::FPDenormalsIgnoreHintScope FPDenormalsIgnoreHintScope;
|
||||
#define OPENCV_SUPPORTS_FP_DENORMALS_HINT 1
|
||||
#else
|
||||
#define OPENCV_SUPPORTS_FP_DENORMALS_HINT 0
|
||||
typedef details::FPDenormalsIgnoreHintScopeNOOP FPDenormalsIgnoreHintScope;
|
||||
#endif
|
||||
|
||||
} // namespace cv
|
||||
|
||||
#endif // OPENCV_CORE_FP_CONTROL_UTILS_HPP
|
||||
@@ -684,7 +684,8 @@ VSX_IMPL_LOAD_L8(vec_double2, double)
|
||||
#endif
|
||||
|
||||
// absolute difference
|
||||
#ifndef vec_absd
|
||||
#ifndef _ARCH_PWR9
|
||||
# undef vec_absd
|
||||
# define vec_absd(a, b) vec_sub(vec_max(a, b), vec_min(a, b))
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user