mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
Merge remote-tracking branch 'refs/remotes/opencv/master' into FileStorageBase64DocsTests
# Conflicts: # modules/core/test/test_io.cpp
This commit is contained in:
@@ -524,6 +524,16 @@ For example:
|
||||
CV_EXPORTS_W void convertScaleAbs(InputArray src, OutputArray dst,
|
||||
double alpha = 1, double beta = 0);
|
||||
|
||||
/** @brief Converts an array to half precision floating number.
|
||||
|
||||
convertFp16 converts FP32 to FP16 or FP16 to FP32. The input array has to have type of CV_32F or
|
||||
CV_16S to represent the bit depth. If the input array is neither of them, it'll do nothing.
|
||||
|
||||
@param src input array.
|
||||
@param dst output array.
|
||||
*/
|
||||
CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst);
|
||||
|
||||
/** @brief Performs a look-up table transform of an array.
|
||||
|
||||
The function LUT fills the output array with values from the look-up table. Indices of the entries
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
#define CV_CPU_SSE4_1 6
|
||||
#define CV_CPU_SSE4_2 7
|
||||
#define CV_CPU_POPCNT 8
|
||||
|
||||
#define CV_CPU_FP16 9
|
||||
#define CV_CPU_AVX 10
|
||||
#define CV_CPU_AVX2 11
|
||||
#define CV_CPU_FMA3 12
|
||||
@@ -143,7 +143,7 @@ enum CpuFeatures {
|
||||
CPU_SSE4_1 = 6,
|
||||
CPU_SSE4_2 = 7,
|
||||
CPU_POPCNT = 8,
|
||||
|
||||
CPU_FP16 = 9,
|
||||
CPU_AVX = 10,
|
||||
CPU_AVX2 = 11,
|
||||
CPU_FMA3 = 12,
|
||||
@@ -215,7 +215,7 @@ enum CpuFeatures {
|
||||
|
||||
#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)
|
||||
# include <Intrin.h>
|
||||
# include "arm_neon.h"
|
||||
# include <arm_neon.h>
|
||||
# define CV_NEON 1
|
||||
# define CPU_HAS_NEON_FEATURE (true)
|
||||
#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
|
||||
@@ -223,6 +223,10 @@ enum CpuFeatures {
|
||||
# define CV_NEON 1
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_NEON__) || defined(__aarch64__)
|
||||
# include <arm_neon.h>
|
||||
#endif
|
||||
|
||||
#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__
|
||||
# define CV_VFP 1
|
||||
#endif
|
||||
|
||||
@@ -3146,21 +3146,29 @@ The example below illustrates how you can compute a normalized and threshold 3D
|
||||
}
|
||||
|
||||
minProb *= image.rows*image.cols;
|
||||
Mat plane;
|
||||
NAryMatIterator it(&hist, &plane, 1);
|
||||
|
||||
// initialize iterator (the style is different from STL).
|
||||
// after initialization the iterator will contain
|
||||
// the number of slices or planes the iterator will go through.
|
||||
// it simultaneously increments iterators for several matrices
|
||||
// supplied as a null terminated list of pointers
|
||||
const Mat* arrays[] = {&hist, 0};
|
||||
Mat planes[1];
|
||||
NAryMatIterator itNAry(arrays, planes, 1);
|
||||
double s = 0;
|
||||
// iterate through the matrix. on each iteration
|
||||
// it.planes[*] (of type Mat) will be set to the current plane.
|
||||
for(int p = 0; p < it.nplanes; p++, ++it)
|
||||
// itNAry.planes[i] (of type Mat) will be set to the current plane
|
||||
// of the i-th n-dim matrix passed to the iterator constructor.
|
||||
for(int p = 0; p < itNAry.nplanes; p++, ++itNAry)
|
||||
{
|
||||
threshold(it.planes[0], it.planes[0], minProb, 0, THRESH_TOZERO);
|
||||
s += sum(it.planes[0])[0];
|
||||
threshold(itNAry.planes[0], itNAry.planes[0], minProb, 0, THRESH_TOZERO);
|
||||
s += sum(itNAry.planes[0])[0];
|
||||
}
|
||||
|
||||
s = 1./s;
|
||||
it = NAryMatIterator(&hist, &plane, 1);
|
||||
for(int p = 0; p < it.nplanes; p++, ++it)
|
||||
it.planes[0] *= s;
|
||||
itNAry = NAryMatIterator(arrays, planes, 1);
|
||||
for(int p = 0; p < itNAry.nplanes; p++, ++itNAry)
|
||||
itNAry.planes[0] *= s;
|
||||
}
|
||||
@endcode
|
||||
*/
|
||||
|
||||
@@ -71,6 +71,17 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined HAVE_FP16 && (defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700))
|
||||
# include <immintrin.h>
|
||||
# define CV_FP16 1
|
||||
#elif defined HAVE_FP16 && defined __GNUC__
|
||||
# define CV_FP16 1
|
||||
#endif
|
||||
|
||||
#ifndef CV_FP16
|
||||
# define CV_FP16 0
|
||||
#endif
|
||||
|
||||
//! @cond IGNORED
|
||||
|
||||
namespace cv
|
||||
|
||||
@@ -361,6 +361,17 @@ Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5&
|
||||
return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));
|
||||
}
|
||||
|
||||
template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11>
|
||||
Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9, const A10& a10, const A11& a11)
|
||||
{
|
||||
return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
|
||||
}
|
||||
|
||||
template<typename T, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9, typename A10, typename A11, typename A12>
|
||||
Ptr<T> makePtr(const A1& a1, const A2& a2, const A3& a3, const A4& a4, const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9, const A10& a10, const A11& a11, const A12& a12)
|
||||
{
|
||||
return Ptr<T>(new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12));
|
||||
}
|
||||
} // namespace cv
|
||||
|
||||
//! @endcond
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
#define CVAUX_STR_EXP(__A) #__A
|
||||
#define CVAUX_STR(__A) CVAUX_STR_EXP(__A)
|
||||
|
||||
#define CVAUX_STRW_EXP(__A) L#__A
|
||||
#define CVAUX_STRW_EXP(__A) L ## #__A
|
||||
#define CVAUX_STRW(__A) CVAUX_STRW_EXP(__A)
|
||||
|
||||
#define CV_VERSION CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) CV_VERSION_STATUS
|
||||
|
||||
Reference in New Issue
Block a user