参考 https://blog.csdn.net/qq_39707351/article/details/80100778
一、cmake (foreach)多余的* 转义
cmake 填写 OPENCV_EXTRA_MODULES_PATH时,使用双斜杠或者反斜杠,或者直接在编辑框里打开
二、binary_descriptor.cpp未定义round
添加
#include <math.h>
double round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
三、motionSaliencyBinWangApr2014.cpp未定义NAN
“/opencv/sources/3rdparty/include/ffmpeg_/libavutil/mathematics.h” 中定义NAN,但是直接包含该文件仍然解决不了。于是逐级拷贝。代码如下:
#ifdef __GNUC__
# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y)
#else
# define AV_GCC_VERSION_AT_LEAST(x,y) 0
#endif
#ifndef av_always_inline
#if AV_GCC_VERSION_AT_LEAST(3,1)
# define av_always_inline __attribute__((always_inline)) inline
#elif defined(_MSC_VER)
# define av_always_inline __forceinline
#else
# define av_always_inline inline
#endif
#endif
union av_intfloat32 {
uint32_t i;
float f;
};
static av_always_inline float av_int2float(uint32_t i)
{
union av_intfloat32 v;
v.i = i;
return v.f;
}
#ifndef NAN
#define NAN av_int2float(0x7fc00000)
#endif