add_definitions(-DJAS_WIN_MSVC_BUILD)
endif(WIN32 AND NOT MINGW)
-ocv_warnings_disable(CMAKE_C_FLAGS -Wno-implicit-function-declaration -Wno-uninitialized -Wmissing-prototypes -Wmissing-declarations -Wunused -Wshadow -Wsign-compare)
+ocv_warnings_disable(CMAKE_C_FLAGS -Wno-implicit-function-declaration -Wno-uninitialized
+ -Wmissing-prototypes -Wmissing-declarations -Wunused -Wshadow
+ -Wsign-compare -Wstrict-overflow)
ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang
ocv_warnings_disable(CMAKE_C_FLAGS /wd4013 /wd4018 /wd4101 /wd4244 /wd4267 /wd4715) # vs2005
# Path for build/platform -specific headers
# ----------------------------------------------------------------------------
set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
-add_definitions(-DHAVE_CVCONFIG_H)
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
//
//M*/
-#ifdef HAVE_CVCONFIG_H
- #include "cvconfig.h"
-#endif
+#include "cvconfig.h"
#ifdef HAVE_MALLOC_H
#include <malloc.h>
set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}" CACHE INTERNAL "Extra linker flags for Release build")
set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Extra linker flags for Debug build")
+# set default visibility to hidden
+if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_OPENCV_GCC_VERSION_NUM GREATER 399)
+ add_extra_compiler_option(-fvisibility=hidden)
+ add_extra_compiler_option(-fvisibility-inlines-hidden)
+endif()
+
#combine all "extra" options
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}")
#pragma once
-#if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(ANDROID)
+#if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(__ANDROID__)
#include <opencv2/core.hpp>
#include <opencv2/objdetect.hpp>
namespace cv
{
-class DetectionBasedTracker
+class CV_EXPORTS DetectionBasedTracker
{
public:
struct Parameters
# define CV_ENABLE_UNROLLED 1
#endif
-#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS
+#if (defined WIN32 || defined _WIN32 || defined WINCE || defined __CYGWIN__) && defined CVAPI_EXPORTS
# define CV_EXPORTS __declspec(dllexport)
+#elif defined __GNUC__ && __GNUC__ >= 4
+# define CV_EXPORTS __attribute__ ((visibility ("default")))
#else
# define CV_EXPORTS
#endif
To make it all work, you need to specialize Ptr<>::delete_obj(), like:
\code
- template<> void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); }
+ template<> CV_EXPORTS void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); }
\endcode
\note{if MyObjectType is a C++ class with a destructor, you do not need to specialize delete_obj(),
#define IPL_BORDER_REFLECT 2
#define IPL_BORDER_WRAP 3
-typedef struct CV_EXPORTS _IplImage
+typedef struct
+#ifdef __cplusplus
+ CV_EXPORTS
+#endif
+_IplImage
{
int nSize; /* sizeof(IplImage) */
int ID; /* version (=0)*/
#define CV_MAX_DIM 32
#define CV_MAX_DIM_HEAP 1024
-typedef struct CV_EXPORTS CvMatND
+typedef struct
+#ifdef __cplusplus
+ CV_EXPORTS
+#endif
+CvMatND
{
int type;
int dims;
struct CvSet;
-typedef struct CV_EXPORTS CvSparseMat
+typedef struct
+#ifdef __cplusplus
+ CV_EXPORTS
+#endif
+CvSparseMat
{
int type;
int dims;
#include <cstdio>
-#ifdef HAVE_CVCONFIG_H
#include "cvconfig.h"
-#endif
#include "opencv2/core.hpp"
#include "opencv2/gpu.hpp"
#include "opencv2/highgui.hpp"
Ptr<CvVideoWriter> writer;
};
-template<> void Ptr<CvCapture>::delete_obj();
-template<> void Ptr<CvVideoWriter>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvCapture>::delete_obj();
+template<> CV_EXPORTS void Ptr<CvVideoWriter>::delete_obj();
} // cv
return (PyType_Ready(to) == 0);
}
-extern "C"
-#if defined WIN32 || defined _WIN32
-__declspec(dllexport)
-#endif
-void initcv2();
+extern "C" CV_EXPORTS void initcv2();
void initcv2()
{
#ifndef __OPENCV_GTESTCV_HPP__
#define __OPENCV_GTESTCV_HPP__
-#ifdef HAVE_CVCONFIG_H
-# include "cvconfig.h"
-#endif
-
-#ifndef GTEST_CREATE_SHARED_LIBRARY
-#ifdef BUILD_SHARED_LIBS
-#define GTEST_LINKED_AS_SHARED_LIBRARY 1
-#endif
-#endif
-
+#include "opencv2/core/cvdef.h"
#include <stdarg.h> // for va_list
#ifdef _MSC_VER
#endif // GTEST_HAS_SEH
-#ifdef _MSC_VER
-
-# if GTEST_LINKED_AS_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllimport)
-# elif GTEST_CREATE_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllexport)
-# endif
-
-#endif // _MSC_VER
-
-#ifndef GTEST_API_
-# define GTEST_API_
-#endif
+#define GTEST_API_ CV_EXPORTS
#ifdef __GNUC__
// Ask the compiler to never inline a given function.
#ifndef __OPENCV_TS_PERF_HPP__
#define __OPENCV_TS_PERF_HPP__
-#ifdef HAVE_CVCONFIG_H
-# include "cvconfig.h"
-#endif
-
-#ifndef GTEST_CREATE_SHARED_LIBRARY
-# ifdef BUILD_SHARED_LIBS
-# define GTEST_LINKED_AS_SHARED_LIBRARY 1
-# endif
-#endif
-
#include "opencv2/core.hpp"
#include "ts_gtest.h"
#include "opencv2/objdetect/objdetect_c.h"
#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/core/utility.hpp"
#include <stdio.h>
-#ifdef HAVE_CVCONFIG_H
-#include <cvconfig.h>
-#endif
-#ifdef HAVE_TBB
-#include "tbb/task_scheduler_init.h"
-#endif
-
using namespace cv;
static void help()
CvSeq* detections = 0;
int i = 0;
int64 start = 0, finish = 0;
-#ifdef HAVE_TBB
- tbb::task_scheduler_init init(tbb::task_scheduler_init::deferred);
- if (numThreads > 0)
- {
- init.initialize(numThreads);
- printf("Number of threads %i\n", numThreads);
- }
- else
- {
- printf("Number of threads is not correct for TBB version");
- return;
- }
-#endif
+
+ setNumThreads(numThreads);
+ numThreads = getNumThreads();
+ printf("Number of threads %i\n", numThreads);
start = cvGetTickCount();
detections = cvLatentSvmDetectObjects(image, detector, storage, 0.5f, numThreads);
finish = cvGetTickCount();
printf("detection time = %.3f\n", (float)(finish - start) / (float)(cvGetTickFrequency() * 1000000.0));
+ setNumThreads(-1);
-#ifdef HAVE_TBB
- init.terminate();
-#endif
for( i = 0; i < detections->total; i++ )
{
CvObjectDetection detection = *(CvObjectDetection*)cvGetSeqElem( detections, i );
#include <dirent.h>
#endif
-#ifdef HAVE_CVCONFIG_H
-#include <cvconfig.h>
-#endif
-
-#ifdef HAVE_TBB
-#include "tbb/task_scheduler_init.h"
-#endif
-
using namespace std;
using namespace cv;