Skip to content

Commit 3f4b81b

Browse files
committed
0.9.3
separated detector code from DepthCamera logic, adding Detector.h, etc; moved headers into include/; added Ptr (shared pointer type) typedef in several classes; re-implemented flood fill algorithm partly based on scan line; using new, more robust contourCurvature function; renamed ObjectParameters -> DetectionParameters adjusted several parameters in DetectionParameters; CMake: removed BUILD_LIB and added BUILD_DEMO flag; use /Ot MSVC flag by default; reduced lag, retrained SVM no longer uses UMat when finding contour (was causing a reduction in performance) visualizer: draw confidence number over dominant direction arrow modified several functions in util to make use of OpenCV built-in methods; adjusted a number of parameters in ObjectParams; use extractChannel instead of split to reduce number of redundant operations added new, more robust contourCurvature function that actually measures the curvature of the contour (rather than local angle); adjusted several parameters; simplified code in StreamingAverager slightly; demo visual displays frame number with DEBUG flag on; assertions turned on with DEBUG flag on; separated detector code from DepthCamera logic; moved headers into include/
1 parent 0821e1f commit 3f4b81b

40 files changed

+34154
-20512
lines changed

CMakeLists.txt

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,29 @@ project( OpenARK )
44

55
set(OpenARK_VERSION_MAJOR 0)
66
set(OpenARK_VERSION_MINOR 9)
7-
set(OpenARK_VERSION_PATCH 2)
7+
set(OpenARK_VERSION_PATCH 3)
88

99
set(SVM_PATHS "\"svm/\", \"../svm/\", \"\"")
10+
set(INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
1011

1112
set(CMAKE_CXX_STACK_SIZE "10000000")
1213
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules")
1314

15+
set(LIB_NAME "OpenARK")
1416
set(DEMO_NAME "OpenARK_demo")
1517
set(TEST_NAME "OpenARK_test")
16-
set(LIB_NAME "OpenARK")
1718

18-
option(BUILD_LIB "BUILD_LIB" ON)
19+
option(BUILD_DEMO "BUILD_DEMO" ON)
1920
option(BUILD_TESTS "BUILD_TESTS" OFF)
2021
option(USE_PMD "USE_PMD" OFF)
2122

2223
include(CheckCXXCompilerFlag)
2324
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
2425
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
2526
if(COMPILER_SUPPORTS_CXX11)
26-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 /EHsc")
27+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2728
elseif(COMPILER_SUPPORTS_CXX0X)
28-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x /EHsc")
29+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
2930
else()
3031
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
3132
endif()
@@ -79,53 +80,59 @@ set(
7980
Webcam.cpp
8081
DepthCamera.cpp
8182
RGBCamera.cpp
82-
UDPSender.cpp
8383
StreamingAverager.cpp
8484
Calibration.cpp
8585
Util.cpp
8686
Visualizer.cpp
8787
Converter.cpp
8888
HandClassifier.cpp
89+
Detector.cpp
90+
HandDetector.cpp
91+
PlaneDetector.cpp
8992
)
9093

9194
set(
92-
HEADERS
93-
FrameObject.h
94-
ObjectParams.h
95-
Hand.h FramePlane.h
96-
Webcam.h
97-
DepthCamera.h
98-
RGBCamera.h
99-
UDPSender.h
100-
StreamingAverager.h
101-
Calibration.h
102-
Util.h
103-
Visualizer.h
104-
Converter.h
95+
HEADERS
96+
${INCLUDE_DIR}/FrameObject.h
97+
${INCLUDE_DIR}/DetectionParams.h
98+
${INCLUDE_DIR}/Hand.h
99+
${INCLUDE_DIR}/FramePlane.h
100+
${INCLUDE_DIR}/Webcam.h
101+
${INCLUDE_DIR}/DepthCamera.h
102+
${INCLUDE_DIR}/RGBCamera.h
103+
${INCLUDE_DIR}/StreamingAverager.h
104+
${INCLUDE_DIR}/Calibration.h
105+
${INCLUDE_DIR}/Util.h
106+
${INCLUDE_DIR}/Visualizer.h
107+
${INCLUDE_DIR}/Converter.h
108+
${INCLUDE_DIR}/HandClassifier.h
109+
${INCLUDE_DIR}/Detector.h
110+
${INCLUDE_DIR}/HandDetector.h
111+
${INCLUDE_DIR}/PlaneDetector.h
105112
stdafx.h
106-
HandClassifier.h
107113
)
108114

109115
if(NOT RSSDK_FOUND)
110116
SET(RSSDK "//")
111117
else()
112118
set(SOURCES ${SOURCES} SR300Camera.cpp)
113-
set(HEADERS ${HEADERS} SR300Camera.h)
119+
set(HEADERS ${HEADERS} ${INCLUDE_DIR}/SR300Camera.h)
114120
endif(NOT RSSDK_FOUND)
115121

116122
if(NOT PMDSDK_FOUND)
117123
SET(PMDSDK "//")
118124
else()
119125
include_directories(${PMDSDK_INCLUDE_DIR})
120126
set(SOURCES ${SOURCES} PMDCamera.cpp)
121-
set(HEADERS ${HEADERS} PMDCamera.h)
127+
set(HEADERS ${HEADERS} ${INCLUDE_DIR}/PMDCamera.h)
122128
set(DEPENDENCIES ${DEPENDENCIES} ${PMDSDK_LIBRARIES})
123129
endif(NOT PMDSDK_FOUND)
124130

125-
configure_file(Version.h.in ${PROJECT_SOURCE_DIR}/version.h)
126-
set(HEADERS ${HEADERS} version.h)
131+
configure_file(Version.h.in ${INCLUDE_DIR}/Version.h)
132+
set(HEADERS ${HEADERS} ${INCLUDE_DIR}/Version.h)
127133

128-
source_group("Header Files" *.h)
134+
# create source group
135+
source_group("Header Files" REGULAR_EXPRESSION ".*\\.(h|hpp)")
129136

130137
macro(add_msvc_pch PrecompiledHeader PrecompiledSource SourcesVar)
131138
if(MSVC)
@@ -150,32 +157,32 @@ endmacro(add_msvc_pch)
150157
if (MSVC)
151158
add_msvc_pch("stdafx.h" "stdafx.cpp" SOURCES)
152159
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
160+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /Ot")
161+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:LIBCMT")
162+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
153163
endif(MSVC)
154164

155-
add_executable( ${DEMO_NAME} main.cpp ${SOURCES} ${HEADERS})
156-
157-
if(${BUILD_LIB})
158-
add_library(${LIB_NAME} STATIC core.h ${SOURCES} ${HEADERS})
159-
set_target_properties( ${LIB_NAME} PROPERTIES OUTPUT_NAME
160-
"openark_${OpenARK_VERSION_MAJOR}_${OpenARK_VERSION_MINOR}_${OpenARK_VERSION_PATCH}")
161-
set_target_properties(${LIB_NAME} PROPERTIES COMPILE_FLAGS "/MDd")
162-
set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)
163-
target_link_libraries( ${LIB_NAME} ${DEPENDENCIES} )
164-
endif(${BUILD_LIB})
165-
166-
target_link_libraries( ${DEMO_NAME} ${DEPENDENCIES} )
167-
set_target_properties( ${DEMO_NAME} PROPERTIES OUTPUT_NAME "OpenARK")
168-
set_target_properties( ${DEMO_NAME} PROPERTIES COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
165+
add_library(${LIB_NAME} STATIC "${INCLUDE_DIR}/Core.h" ${SOURCES} ${HEADERS})
166+
set_target_properties( ${LIB_NAME} PROPERTIES OUTPUT_NAME
167+
"openark_${OpenARK_VERSION_MAJOR}_${OpenARK_VERSION_MINOR}_${OpenARK_VERSION_PATCH}")
168+
set_target_properties(${LIB_NAME} PROPERTIES COMPILE_FLAGS "/MD")
169+
set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)
170+
target_link_libraries( ${LIB_NAME} ${DEPENDENCIES} )
171+
target_include_directories(${LIB_NAME} PRIVATE ${INCLUDE_DIR})
172+
173+
if(${BUILD_DEMO})
174+
add_executable( ${DEMO_NAME} main.cpp ${SOURCES} ${HEADERS})
175+
target_include_directories(${DEMO_NAME} PRIVATE ${INCLUDE_DIR})
176+
target_link_libraries( ${DEMO_NAME} ${DEPENDENCIES} )
177+
set_target_properties( ${DEMO_NAME} PROPERTIES OUTPUT_NAME ${LIB_NAME})
178+
set_target_properties( ${DEMO_NAME} PROPERTIES COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
179+
endif(${BUILD_DEMO})
169180

170181
if(${BUILD_TESTS})
171182
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/OpenARK_test)
172183
execute_process(
173184
COMMAND git clone https://github.com/augcog/OpenARK_test.git
174185
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
175-
#else()
176-
# execute_process(
177-
# COMMAND git pull
178-
# WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/OpenARK_test)
179186
endif(NOT EXISTS ${PROJECT_SOURCE_DIR}/OpenARK_test)
180187

181188
set(
@@ -190,4 +197,6 @@ if(${BUILD_TESTS})
190197
target_link_libraries( ${TEST_NAME} ${DEPENDENCIES} )
191198
set_target_properties( ${TEST_NAME} PROPERTIES
192199
COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
200+
201+
target_include_directories(${TEST_NAME} PRIVATE ${INCLUDE_DIR})
193202
endif(${BUILD_TESTS})

0 commit comments

Comments
 (0)