Merge branch 'develop' of http://gitlab.mynt.com/mynteye/mynt-eye-sdk-2 into develop
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -16,6 +16,11 @@ _output/ | |||||||
| 
 | 
 | ||||||
| /plugins/ | /plugins/ | ||||||
| 
 | 
 | ||||||
|  | /3rdparty/opencv/ | ||||||
|  | /pkginfo.sh | ||||||
|  | /*.nsi | ||||||
|  | /*.exe | ||||||
|  | 
 | ||||||
| # ros | # ros | ||||||
| 
 | 
 | ||||||
| /wrappers/ros/build | /wrappers/ros/build | ||||||
|  | |||||||
							
								
								
									
										169
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						| @ -14,10 +14,14 @@ | |||||||
| 
 | 
 | ||||||
| cmake_minimum_required(VERSION 3.0) | cmake_minimum_required(VERSION 3.0) | ||||||
| 
 | 
 | ||||||
| project(mynteye VERSION 2.0.1 LANGUAGES C CXX) | project(mynteye VERSION 2.2.2 LANGUAGES C CXX) | ||||||
| 
 | 
 | ||||||
| include(cmake/Common.cmake) | include(cmake/Common.cmake) | ||||||
| 
 | 
 | ||||||
|  | if(NOT CMAKE_DEBUG_POSTFIX) | ||||||
|  |   set(CMAKE_DEBUG_POSTFIX d) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
| # options | # options | ||||||
| 
 | 
 | ||||||
| include(cmake/Option.cmake) | include(cmake/Option.cmake) | ||||||
| @ -79,6 +83,17 @@ configure_file( | |||||||
|   include/mynteye/mynteye.h @ONLY |   include/mynteye/mynteye.h @ONLY | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | configure_file( | ||||||
|  |   cmake/templates/pkginfo.sh.in | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/pkginfo.sh @ONLY | ||||||
|  | ) | ||||||
|  | if(OS_WIN) | ||||||
|  |   configure_file( | ||||||
|  |     scripts/win/nsis/winpack.nsi.in | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/winpack.nsi @ONLY | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
| # targets | # targets | ||||||
| 
 | 
 | ||||||
| add_definitions(-DMYNTEYE_EXPORTS) | add_definitions(-DMYNTEYE_EXPORTS) | ||||||
| @ -90,11 +105,6 @@ set_outdir( | |||||||
|   "${OUT_DIR}/bin" |   "${OUT_DIR}/bin" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| set(MYNTEYE_CMAKE_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include") |  | ||||||
| set(MYNTEYE_CMAKE_BINDIR "${CMAKE_INSTALL_PREFIX}/bin") |  | ||||||
| set(MYNTEYE_CMAKE_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib") |  | ||||||
| set(MYNTEYE_CMAKE_INSTALLDIR "${MYNTEYE_CMAKE_LIBDIR}/cmake/${MYNTEYE_NAME}") |  | ||||||
| 
 |  | ||||||
| ## main | ## main | ||||||
| 
 | 
 | ||||||
| if(WITH_GLOG) | if(WITH_GLOG) | ||||||
| @ -108,84 +118,58 @@ endif() | |||||||
| 
 | 
 | ||||||
| ## libmynteye | ## libmynteye | ||||||
| 
 | 
 | ||||||
| if(NOT WITH_GLOG) | if(NOT WITH_GLOG AND NOT OS_WIN) | ||||||
|   set(__MINIGLOG_FLAGS "-Wno-unused-parameter -Wno-format -Wno-return-type") |   set(__MINIGLOG_FLAGS "-Wno-unused-parameter -Wno-format -Wno-return-type") | ||||||
|   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${__MINIGLOG_FLAGS}") |   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${__MINIGLOG_FLAGS}") | ||||||
|   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${__MINIGLOG_FLAGS}") |   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${__MINIGLOG_FLAGS}") | ||||||
|   unset(__MINIGLOG_FLAGS) |   unset(__MINIGLOG_FLAGS) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| set(MYNTEYE_PUBLIC_H |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/callbacks.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/global.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/logger.h |  | ||||||
|   ${CMAKE_CURRENT_BINARY_DIR}/include/mynteye/mynteye.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/types.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/utils.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/src/device/context.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/src/device/device.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/src/internal/files.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/src/internal/strings.h |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/src/internal/times.h |  | ||||||
| ) |  | ||||||
| if(WITH_API) |  | ||||||
|   list(APPEND MYNTEYE_PUBLIC_H |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/src/api/api.h |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/src/api/plugin.h |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/src/api/processor/object.h |  | ||||||
|   ) |  | ||||||
| endif() |  | ||||||
| if(NOT WITH_GLOG) |  | ||||||
|   list(APPEND MYNTEYE_PUBLIC_H |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/miniglog.h |  | ||||||
|   ) |  | ||||||
| endif() |  | ||||||
| 
 |  | ||||||
| if(OS_WIN) | if(OS_WIN) | ||||||
|   set(UVC_SRC src/uvc/uvc-wmf.cc) |   set(UVC_SRC src/mynteye/uvc/win/uvc-wmf.cc) | ||||||
| elseif(OS_MAC) | elseif(OS_MAC) | ||||||
|   set(UVC_SRC src/uvc/uvc-libuvc.cc) |   set(UVC_SRC src/mynteye/uvc/macosx/uvc-libuvc.cc) | ||||||
| 
 | 
 | ||||||
|   find_package(libuvc REQUIRED) |   find_package(libuvc REQUIRED) | ||||||
|   set(UVC_LIB ${libuvc_LIBRARIES}) |   set(UVC_LIB ${libuvc_LIBRARIES}) | ||||||
| 
 | 
 | ||||||
|   include_directories(${libuvc_INCLUDE_DIRS}) |   include_directories(${libuvc_INCLUDE_DIRS}) | ||||||
| elseif(OS_LINUX) | elseif(OS_LINUX) | ||||||
|   set(UVC_SRC src/uvc/uvc-v4l2.cc) |   set(UVC_SRC src/mynteye/uvc/linux/uvc-v4l2.cc) | ||||||
| else() | else() | ||||||
|   message(FATAL_ERROR "Unsupported OS.") |   message(FATAL_ERROR "Unsupported OS.") | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| set(MYNTEYE_SRCS | set(MYNTEYE_SRCS | ||||||
|   ${UVC_SRC} |   ${UVC_SRC} | ||||||
|   src/internal/channels.cc |   src/mynteye/types.cc | ||||||
|   src/internal/config.cc |   src/mynteye/util/files.cc | ||||||
|   src/internal/dl.cc |   src/mynteye/util/strings.cc | ||||||
|   src/internal/files.cc |   src/mynteye/device/channels.cc | ||||||
|   src/internal/motions.cc |   src/mynteye/device/config.cc | ||||||
|   src/internal/streams.cc |   src/mynteye/device/context.cc | ||||||
|   src/internal/strings.cc |   src/mynteye/device/device.cc | ||||||
|   src/internal/types.cc |   src/mynteye/device/device_s.cc | ||||||
|   src/public/types.cc |   src/mynteye/device/motions.cc | ||||||
|   src/public/utils.cc |   src/mynteye/device/streams.cc | ||||||
|   src/device/context.cc |   src/mynteye/device/types.cc | ||||||
|   src/device/device.cc |   src/mynteye/device/utils.cc | ||||||
|   src/device/device_s.cc |  | ||||||
| ) | ) | ||||||
| if(WITH_API) | if(WITH_API) | ||||||
|   list(APPEND MYNTEYE_SRCS |   list(APPEND MYNTEYE_SRCS | ||||||
|     src/api/api.cc |     src/mynteye/api/api.cc | ||||||
|     src/api/synthetic.cc |     src/mynteye/api/dl.cc | ||||||
|     src/api/processor/processor.cc |     src/mynteye/api/processor.cc | ||||||
|     src/api/processor/rectify_processor.cc |     src/mynteye/api/synthetic.cc | ||||||
|     src/api/processor/disparity_processor.cc |     src/mynteye/api/processor/rectify_processor.cc | ||||||
|     src/api/processor/disparity_normalized_processor.cc |     src/mynteye/api/processor/disparity_processor.cc | ||||||
|     src/api/processor/depth_processor.cc |     src/mynteye/api/processor/disparity_normalized_processor.cc | ||||||
|     src/api/processor/points_processor.cc |     src/mynteye/api/processor/depth_processor.cc | ||||||
|  |     src/mynteye/api/processor/points_processor.cc | ||||||
|   ) |   ) | ||||||
| endif() | endif() | ||||||
| if(NOT WITH_GLOG) | if(NOT WITH_GLOG) | ||||||
|   list(APPEND MYNTEYE_SRCS src/public/miniglog.cc) |   list(APPEND MYNTEYE_SRCS src/mynteye/miniglog.cc) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| set(MYNTEYE_LINKLIBS ${UVC_LIB}) | set(MYNTEYE_LINKLIBS ${UVC_LIB}) | ||||||
| @ -214,27 +198,78 @@ target_include_directories(${MYNTEYE_NAME} PUBLIC | |||||||
|   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" |   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" | ||||||
|   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>" |   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>" | ||||||
|   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>" |   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>" | ||||||
|   "$<INSTALL_INTERFACE:${MYNTEYE_CMAKE_INCLUDE_DIR}>" |   "$<INSTALL_INTERFACE:include>" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| set_target_properties(${MYNTEYE_NAME} PROPERTIES | set_target_properties(${MYNTEYE_NAME} PROPERTIES | ||||||
|   VERSION ${PROJECT_VERSION} |   VERSION ${PROJECT_VERSION} | ||||||
|   SOVERSION ${PROJECT_VERSION_MAJOR} |   SOVERSION ${PROJECT_VERSION_MAJOR} | ||||||
| ) | ) | ||||||
| set_target_properties(${MYNTEYE_NAME} PROPERTIES |  | ||||||
|   PUBLIC_HEADER "${MYNTEYE_PUBLIC_H}" |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| # install | # install | ||||||
| 
 | 
 | ||||||
| #message(STATUS "MYNTEYE_CMAKE_INCLUDE_DIR: ${MYNTEYE_CMAKE_INCLUDE_DIR}") | set(MYNTEYE_CMAKE_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include/${MYNTEYE_NAME}") | ||||||
| #message(STATUS "MYNTEYE_CMAKE_BINDIR: ${MYNTEYE_CMAKE_BINDIR}") | set(MYNTEYE_CMAKE_BINDIR "${CMAKE_INSTALL_PREFIX}/bin") | ||||||
| #message(STATUS "MYNTEYE_CMAKE_LIBDIR: ${MYNTEYE_CMAKE_LIBDIR}") | set(MYNTEYE_CMAKE_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib") | ||||||
| #message(STATUS "MYNTEYE_CMAKE_INSTALLDIR: ${MYNTEYE_CMAKE_INSTALLDIR}") | set(MYNTEYE_CMAKE_INSTALLDIR "${MYNTEYE_CMAKE_LIBDIR}/cmake/${MYNTEYE_NAME}") | ||||||
|  | 
 | ||||||
|  | install(FILES | ||||||
|  |   ${CMAKE_CURRENT_BINARY_DIR}/include/mynteye/mynteye.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/global.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/logger.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/types.h | ||||||
|  |   DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR} | ||||||
|  | ) | ||||||
|  | install(FILES | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/callbacks.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/context.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/device.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/utils.h | ||||||
|  |   DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/device | ||||||
|  | ) | ||||||
|  | install(FILES | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/util/files.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/util/strings.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/util/times.h | ||||||
|  |   DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/util | ||||||
|  | ) | ||||||
|  | if(WITH_API) | ||||||
|  |   install(FILES | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/api/api.h | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/api/plugin.h | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/api/object.h | ||||||
|  |     DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/api | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
|  | if(NOT WITH_GLOG) | ||||||
|  |   install(FILES | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/miniglog.h | ||||||
|  |     DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR} | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | install(FILES | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/callbacks.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/context.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/device.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/files.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/glog_init.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/strings.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/times.h | ||||||
|  |   ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/utils.h | ||||||
|  |   DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR} | ||||||
|  | ) | ||||||
|  | if(WITH_API) | ||||||
|  |   install(FILES | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/api.h | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/plugin.h | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/include/deprecated/mynteye/object.h | ||||||
|  |     DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR} | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
| 
 | 
 | ||||||
| install(TARGETS ${MYNTEYE_NAME} | install(TARGETS ${MYNTEYE_NAME} | ||||||
|   EXPORT ${MYNTEYE_NAME}-targets |   EXPORT ${MYNTEYE_NAME}-targets | ||||||
|   PUBLIC_HEADER DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/${MYNTEYE_NAME} |  | ||||||
|   RUNTIME DESTINATION ${MYNTEYE_CMAKE_BINDIR} |   RUNTIME DESTINATION ${MYNTEYE_CMAKE_BINDIR} | ||||||
|   LIBRARY DESTINATION ${MYNTEYE_CMAKE_LIBDIR} |   LIBRARY DESTINATION ${MYNTEYE_CMAKE_LIBDIR} | ||||||
|   ARCHIVE DESTINATION ${MYNTEYE_CMAKE_LIBDIR} |   ARCHIVE DESTINATION ${MYNTEYE_CMAKE_LIBDIR} | ||||||
|  | |||||||
| @ -26,6 +26,16 @@ SINGLE_QUOTE := ' | |||||||
| OPEN_PAREN := ( | OPEN_PAREN := ( | ||||||
| CLOSE_PAREN := ) | CLOSE_PAREN := ) | ||||||
| 
 | 
 | ||||||
|  | # Options
 | ||||||
|  | #
 | ||||||
|  | #   VS_CODE: ignore to auto detect, otherwise specify the version
 | ||||||
|  | #            15|2017, 14|2015, 12|2013, 11|2012, 10|2010, 9|2008, 8|2005
 | ||||||
|  | #   BUILD_TYPE: Debug|Release
 | ||||||
|  | #
 | ||||||
|  | # e.g. make [TARGET] VS_CODE=2017 BUILD_TYPE=Debug
 | ||||||
|  | 
 | ||||||
|  | BUILD_TYPE ?= Release | ||||||
|  | 
 | ||||||
| # Host detection
 | # Host detection
 | ||||||
| 
 | 
 | ||||||
| ifeq ($(OS),Windows_NT) | ifeq ($(OS),Windows_NT) | ||||||
| @ -124,7 +134,7 @@ ifeq ($(HOST_OS),Win) | |||||||
|     CC := cl |     CC := cl | ||||||
|     CXX := cl |     CXX := cl | ||||||
|     MAKE := make |     MAKE := make | ||||||
|     BUILD := msbuild.exe ALL_BUILD.vcxproj /property:Configuration=Release |     BUILD := msbuild.exe ALL_BUILD.vcxproj /property:Configuration=$(BUILD_TYPE) | ||||||
|   endif |   endif | ||||||
| else | else | ||||||
|   # mac & linux |   # mac & linux | ||||||
| @ -144,8 +154,7 @@ endif | |||||||
| # CMake
 | # CMake
 | ||||||
| 
 | 
 | ||||||
| CMAKE := cmake | CMAKE := cmake | ||||||
| # CMAKE := $(CMAKE) -DCMAKE_BUILD_TYPE=Debug
 | CMAKE := $(CMAKE) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) | ||||||
| CMAKE := $(CMAKE) -DCMAKE_BUILD_TYPE=Release |  | ||||||
| ifneq ($(CC),) | ifneq ($(CC),) | ||||||
|   CMAKE := $(CMAKE) -DCMAKE_C_COMPILER=$(CC) |   CMAKE := $(CMAKE) -DCMAKE_C_COMPILER=$(CC) | ||||||
| endif | endif | ||||||
| @ -202,6 +211,15 @@ endif | |||||||
| 
 | 
 | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | # Package
 | ||||||
|  | 
 | ||||||
|  | PKGVERSION := $(shell ./scripts/version.sh) | ||||||
|  | PKGNAME := mynteye-s-$(PKGVERSION)-$(HOST_OS)-$(HOST_ARCH) | ||||||
|  | ifeq ($(HOST_OS),Linux) | ||||||
|  |   PKGNAME := $(PKGNAME)-gcc$(shell gcc -dumpversion | cut -c 1-1) | ||||||
|  | endif | ||||||
|  | PKGNAME := $(call lower,$(PKGNAME)) | ||||||
|  | 
 | ||||||
| # Shell
 | # Shell
 | ||||||
| 
 | 
 | ||||||
| # `sh` is not possible to export a function
 | # `sh` is not possible to export a function
 | ||||||
|  | |||||||
							
								
								
									
										103
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,103 @@ | |||||||
|  | pipeline { | ||||||
|  |   agent { | ||||||
|  |     // docker { image 'ros:kinetic-ros-base-xenial' } | ||||||
|  |     docker { image 'joinaero/kinetic-ros-opencv-xenial' } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /* | ||||||
|  |   environment { | ||||||
|  |     // FindOpenCV.cmake | ||||||
|  |     OpenCV_DIR = '/opt/ros/kinetic/share/OpenCV-3.3.1-dev' | ||||||
|  |   } | ||||||
|  |   */ | ||||||
|  | 
 | ||||||
|  |   stages { | ||||||
|  |     stage('Prepare') { | ||||||
|  |       steps { | ||||||
|  |         echo "WORKSPACE: ${env.WORKSPACE}" | ||||||
|  |         echo 'apt-get ..' | ||||||
|  |         sh 'apt-get update' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Init') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make init ..' | ||||||
|  |         sh 'make init INIT_OPTIONS=-y' | ||||||
|  |         // echo 'skip get submodules and make test' | ||||||
|  |         // sh './scripts/init.sh -y' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Build') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make build ..' | ||||||
|  |         sh '. /opt/ros/kinetic/setup.sh; make build' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Install') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make install ..' | ||||||
|  |         sh '. /opt/ros/kinetic/setup.sh; make install SUDO=' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Test') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make test ..' | ||||||
|  |         sh '. /opt/ros/kinetic/setup.sh; make test SUDO=' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Samples') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make samples ..' | ||||||
|  |         sh '. /opt/ros/kinetic/setup.sh; make samples SUDO=' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('Tools') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make tools ..' | ||||||
|  |         sh '. /opt/ros/kinetic/setup.sh; make tools SUDO=' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     stage('ROS') { | ||||||
|  |       steps { | ||||||
|  |         echo 'make ros ..' | ||||||
|  |         sh ''' | ||||||
|  |         . /opt/ros/kinetic/setup.sh | ||||||
|  |         rosdep install --from-paths wrappers/ros/src --ignore-src --rosdistro kinetic -y | ||||||
|  |         make ros SUDO= | ||||||
|  |         ''' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     /* | ||||||
|  |     stage('Clean') { | ||||||
|  |       steps { | ||||||
|  |         echo 'clean ..' | ||||||
|  |         sh ''' | ||||||
|  |         rm -rf /var/lib/apt/lists/* | ||||||
|  |         ''' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     */ | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   post { | ||||||
|  |     always { | ||||||
|  |       echo 'This will always run' | ||||||
|  |     } | ||||||
|  |     success { | ||||||
|  |       echo 'This will run only if successful' | ||||||
|  |     } | ||||||
|  |     failure { | ||||||
|  |       echo 'This will run only if failed' | ||||||
|  |       mail to: 'mynteye-ci@slightech.com', | ||||||
|  |       subject: "Failed Pipeline: ${currentBuild.fullDisplayName}", | ||||||
|  |       body: "Something is wrong with ${env.BUILD_URL}" | ||||||
|  |     } | ||||||
|  |     unstable { | ||||||
|  |       echo 'This will run only if the run was marked as unstable' | ||||||
|  |     } | ||||||
|  |     changed { | ||||||
|  |       echo 'This will run only if the state of the Pipeline has changed' | ||||||
|  |       echo 'For example, if the Pipeline was previously failing but is now successful' | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										48
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						| @ -22,6 +22,8 @@ MKFILE_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH))) | |||||||
| #   UNIX: /usr/local
 | #   UNIX: /usr/local
 | ||||||
| #   Windows: c:/Program Files/${PROJECT_NAME}
 | #   Windows: c:/Program Files/${PROJECT_NAME}
 | ||||||
| 
 | 
 | ||||||
|  | SUDO ?= sudo | ||||||
|  | 
 | ||||||
| .DEFAULT_GOAL := help | .DEFAULT_GOAL := help | ||||||
| 
 | 
 | ||||||
| help: | help: | ||||||
| @ -35,6 +37,7 @@ help: | |||||||
| 	@echo "  make test            build test and run" | 	@echo "  make test            build test and run" | ||||||
| 	@echo "  make samples         build samples" | 	@echo "  make samples         build samples" | ||||||
| 	@echo "  make tools           build tools" | 	@echo "  make tools           build tools" | ||||||
|  | 	@echo "  make pkg             package sdk" | ||||||
| 	@echo "  make ros             build ros wrapper" | 	@echo "  make ros             build ros wrapper" | ||||||
| 	@echo "  make py              build python wrapper" | 	@echo "  make py              build python wrapper" | ||||||
| 	@echo "  make clean|cleanall  clean generated or useless things" | 	@echo "  make clean|cleanall  clean generated or useless things" | ||||||
| @ -49,7 +52,8 @@ all: test samples tools | |||||||
| 
 | 
 | ||||||
| apidoc: | apidoc: | ||||||
| 	@$(call echo,Make $@) | 	@$(call echo,Make $@) | ||||||
| 	@[ -e ./_install/include ] || $(MAKE) install | 	@# @[ -e ./_install/include ] || $(MAKE) install | ||||||
|  | 	@[ -e /usr/local/include/mynteye ] || $(MAKE) install | ||||||
| 	@$(SH) ./doc/build.sh | 	@$(SH) ./doc/build.sh | ||||||
| 
 | 
 | ||||||
| opendoc: apidoc | opendoc: apidoc | ||||||
| @ -76,7 +80,7 @@ submodules: | |||||||
| 
 | 
 | ||||||
| init: submodules | init: submodules | ||||||
| 	@$(call echo,Make $@) | 	@$(call echo,Make $@) | ||||||
| 	@$(SH) ./scripts/init.sh | 	@$(SH) ./scripts/init.sh $(INIT_OPTIONS) | ||||||
| 
 | 
 | ||||||
| .PHONY: init | .PHONY: init | ||||||
| 
 | 
 | ||||||
| @ -123,11 +127,26 @@ else | |||||||
| 	@cd ./_build; make install | 	@cd ./_build; make install | ||||||
| endif | endif | ||||||
| else | else | ||||||
| 	@cd ./_build; sudo make install | ifeq ($(HOST_OS),Linux) | ||||||
|  | 	@cd ./_build; $(SUDO) make install | ||||||
|  | else | ||||||
|  | 	@cd ./_build; make install | ||||||
|  | endif | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| .PHONY: install | .PHONY: install | ||||||
| 
 | 
 | ||||||
|  | uninstall: | ||||||
|  | 	@$(call echo,Make $@) | ||||||
|  | ifeq ($(HOST_OS),Linux) | ||||||
|  | 	$(SUDO) rm -rf /usr/local/lib/libmynteye* | ||||||
|  | 	$(SUDO) rm -rf /usr/local/include/mynteye/ | ||||||
|  | 	$(SUDO) rm -rf /usr/local/lib/cmake/mynteye/ | ||||||
|  | 	$(SUDO) rm -rf /usr/local/share/mynteye/ | ||||||
|  | endif | ||||||
|  | 
 | ||||||
|  | .PHONY: uninstall | ||||||
|  | 
 | ||||||
| # samples
 | # samples
 | ||||||
| 
 | 
 | ||||||
| samples: install | samples: install | ||||||
| @ -144,14 +163,30 @@ tools: install | |||||||
| 
 | 
 | ||||||
| .PHONY: tools | .PHONY: tools | ||||||
| 
 | 
 | ||||||
|  | # pkg
 | ||||||
|  | 
 | ||||||
|  | pkg: clean | ||||||
|  | 	@$(call echo,Make $@) | ||||||
|  | ifeq ($(HOST_OS),Win) | ||||||
|  | 	@$(SH) ./scripts/win/winpack.sh "$(PKGNAME)" | ||||||
|  | else | ||||||
|  | 	$(error "Can't make pkg on $(HOST_OS)") | ||||||
|  | endif | ||||||
|  | 
 | ||||||
|  | cleanpkg: | ||||||
|  | 	@$(call echo,Make $@) | ||||||
|  | 	@$(call rm_f,$(PKGNAME)*) | ||||||
|  | 
 | ||||||
|  | .PHONY: pkg cleanpkg | ||||||
|  | 
 | ||||||
| # ros
 | # ros
 | ||||||
| 
 | 
 | ||||||
| ros: install | ros: install | ||||||
| 	@$(call echo,Make $@) | 	@$(call echo,Make $@) | ||||||
| ifeq ($(HOST_OS),Win) | ifeq ($(HOST_OS),Linux) | ||||||
| 	$(error "Can't make ros on win") | 	@cd ./wrappers/ros && catkin_make -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) | ||||||
| else | else | ||||||
| 	@cd ./wrappers/ros && catkin_make | 	$(error "Can't make ros on $(HOST_OS)") | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| .PHONY: ros | .PHONY: ros | ||||||
| @ -260,6 +295,7 @@ host: | |||||||
| 	@echo BUILD: $(BUILD) | 	@echo BUILD: $(BUILD) | ||||||
| 	@echo LDD: $(LDD) | 	@echo LDD: $(LDD) | ||||||
| 	@echo CMAKE: $(CMAKE) | 	@echo CMAKE: $(CMAKE) | ||||||
|  | 	@echo PKGNAME: $(PKGNAME) | ||||||
| 
 | 
 | ||||||
| .PHONY: host | .PHONY: host | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @ -1,10 +1,10 @@ | |||||||
| # MYNT® EYE SDK | # MYNT® EYE S SDK | ||||||
| 
 | 
 | ||||||
| [](https://github.com/slightech/MYNT-EYE-SDK-2) | [](https://github.com/slightech/MYNT-EYE-S-SDK) | ||||||
| 
 | 
 | ||||||
| ## Overview | ## Overview | ||||||
| 
 | 
 | ||||||
| MYNT® EYE SDK 2.0 is a cross-platform library for MYNT® EYE cameras. | MYNT® EYE S SDK is a cross-platform library for MYNT® EYE Standard cameras. | ||||||
| 
 | 
 | ||||||
| The following platforms have been tested: | The following platforms have been tested: | ||||||
| 
 | 
 | ||||||
| @ -16,13 +16,12 @@ Please follow the guide doc to install the SDK on different platforms. | |||||||
| 
 | 
 | ||||||
| ## Documentations | ## Documentations | ||||||
| 
 | 
 | ||||||
| * [API Doc](https://github.com/slightech/MYNT-EYE-SDK-2/releases): API reference, some guides and data spec. | * [API Doc](https://github.com/slightech/MYNT-EYE-S-SDK/releases): API reference, some guides and data spec. | ||||||
|   * en: [](https://github.com/slightech/MYNT-EYE-SDK-2/files/2285351/mynt-eye-sdk-apidoc-2.0.1-rc1-en.pdf) [](https://github.com/slightech/MYNT-EYE-SDK-2/files/2285352/mynt-eye-sdk-apidoc-2.0.1-rc1-html-en.zip) [](https://slightech.github.io/MYNT-EYE-SDK-2/) |   * en: [](https://github.com/slightech/MYNT-EYE-S-SDK/files/2562294/mynt-eye-s-sdk-apidoc-2.2.2-rc0-en.pdf) [](https://github.com/slightech/MYNT-EYE-S-SDK/files/2562296/mynt-eye-s-sdk-apidoc-2.2.2-rc0-en.zip) [](https://slightech.github.io/MYNT-EYE-S-SDK/) | ||||||
|   * zh-Hans: [](https://github.com/slightech/MYNT-EYE-SDK-2/files/2285353/mynt-eye-sdk-apidoc-2.0.1-rc1-zh-Hans.pdf) [](https://github.com/slightech/MYNT-EYE-SDK-2/files/2285354/mynt-eye-sdk-apidoc-2.0.1-rc1-html-zh-Hans.zip) [](http://doc.myntai.com/resource/api/mynt-eye-sdk-apidoc-2.0.1-rc1-html-zh-Hans/mynt-eye-sdk-apidoc-2.0.1-rc1-html-zh-Hans/index.html) |   * zh-Hans: [](https://github.com/slightech/MYNT-EYE-S-SDK/files/2562297/mynt-eye-s-sdk-apidoc-2.2.2-rc0-zh-Hans.pdf) [](https://github.com/slightech/MYNT-EYE-S-SDK/files/2562298/mynt-eye-s-sdk-apidoc-2.2.2-rc0-zh-Hans.zip) [](http://doc.myntai.com/resource/api/mynt-eye-s-sdk-apidoc-2.2.2-rc0-zh-Hans/mynt-eye-s-sdk-apidoc-2.2.2-rc0-zh-Hans/index.html) | ||||||
| * [Guide Doc](https://github.com/slightech/MYNT-EYE-SDK-2-Guide/releases): How to install and start using the SDK. | * [Guide Doc](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/releases): How to install and start using the SDK. | ||||||
|   * en: [](https://github.com/slightech/MYNT-EYE-SDK-2-Guide/files/2281782/mynt-eye-sdk-guide-2.0.1-rc1-en.pdf) [](https://github.com/slightech/MYNT-EYE-SDK-2-Guide/files/2281783/mynt-eye-sdk-guide-2.0.1-rc1-html-en.zip) [](https://slightech.github.io/MYNT-EYE-SDK-2-Guide/) |   * en: [](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2562348/mynt-eye-s-sdk-guide-2.2.2-rc0-en.pdf) [](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2562352/mynt-eye-s-sdk-guide-2.2.2-rc0-en.zip) [](https://slightech.github.io/MYNT-EYE-S-SDK-Guide/) | ||||||
|   * zh-Hans: [](https://github.com/slightech/MYNT-EYE-SDK-2-Guide/files/2281785/mynt-eye-sdk-guide-2.0.1-rc1-zh-Hans.pdf) [](https://github.com/slightech/MYNT-EYE-SDK-2-Guide/files/2281786/mynt-eye-sdk-guide-2.0.1-rc1-html-zh-Hans.zip) [](http://doc.myntai.com/resource/sdk/mynt-eye-sdk-guide-2.0.1-rc1-html-zh-Hans/mynt-eye-sdk-guide-2.0.1-rc1-html-zh-Hans/index.html) |   * zh-Hans: [](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2562353/mynt-eye-s-sdk-guide-2.2.2-rc0-zh-Hans.pdf) [](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2562356/mynt-eye-s-sdk-guide-2.2.2-rc0-zh-Hans.zip) [](http://doc.myntai.com/resource/sdk/mynt-eye-s-sdk-guide-2.2.2-rc0-zh-Hans/mynt-eye-s-sdk-guide-2.2.2-rc0-zh-Hans/index.html) | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| > Supported languages: `en`, `zh-Hans`. | > Supported languages: `en`, `zh-Hans`. | ||||||
| 
 | 
 | ||||||
| @ -30,7 +29,7 @@ Please follow the guide doc to install the SDK on different platforms. | |||||||
| 
 | 
 | ||||||
| [MYNTEYE_BOX]: http://doc.myntai.com/mynteye/s/download | [MYNTEYE_BOX]: http://doc.myntai.com/mynteye/s/download | ||||||
| 
 | 
 | ||||||
| Get firmwares from our online disks: [MYNTEYE_BOX][]. The latest version is `2.0.1`. | Get firmwares from our online disks: [MYNTEYE_BOX][]. The latest version is `2.2.2`. | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
| 
 | 
 | ||||||
| @ -62,8 +61,8 @@ make samples | |||||||
| 
 | 
 | ||||||
| ## Mirrors | ## Mirrors | ||||||
| 
 | 
 | ||||||
| 国内镜像:[码云](https://gitee.com/mynt/MYNT-EYE-SDK-2)。 | 国内镜像:[码云](https://gitee.com/mynt/MYNT-EYE-S-SDK)。 | ||||||
| 
 | 
 | ||||||
| ## License | ## License | ||||||
| 
 | 
 | ||||||
| This project is licensed under the Apache License, Version 2.0. Copyright 2018 Slightech Co., Ltd. | This project is licensed under the [Apache License, Version 2.0](LICENSE). Copyright 2018 Slightech Co., Ltd. | ||||||
|  | |||||||
| @ -70,7 +70,9 @@ macro(set_outdir ARCHIVE_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY RUNTIME_OUTPU | |||||||
|   endforeach() |   endforeach() | ||||||
| endmacro() | endmacro() | ||||||
| 
 | 
 | ||||||
| set(__exe2bat_relative_path false) | if(NOT __exe2bat_relative_path) | ||||||
|  |   set(__exe2bat_relative_path false) | ||||||
|  | endif() | ||||||
| 
 | 
 | ||||||
| macro(exe2bat exe_name exe_dir dll_search_paths) | macro(exe2bat exe_name exe_dir dll_search_paths) | ||||||
|   message(STATUS "Generating ${exe_name}.bat") |   message(STATUS "Generating ${exe_name}.bat") | ||||||
|  | |||||||
| @ -15,14 +15,25 @@ | |||||||
| include(${CMAKE_CURRENT_LIST_DIR}/IncludeGuard.cmake) | include(${CMAKE_CURRENT_LIST_DIR}/IncludeGuard.cmake) | ||||||
| cmake_include_guard() | cmake_include_guard() | ||||||
| 
 | 
 | ||||||
| find_package(OpenCV REQUIRED) | if(OpenCV_FIND_QUIET) | ||||||
| message(STATUS "Found OpenCV: ${OpenCV_VERSION}") |   find_package(OpenCV QUIET) | ||||||
| if(OpenCV_VERSION VERSION_LESS 3.0) |  | ||||||
|   add_definitions(-DUSE_OPENCV2) |  | ||||||
| elseif(OpenCV_VERSION VERSION_LESS 4.0) |  | ||||||
|   add_definitions(-DUSE_OPENCV3) |  | ||||||
| else() | else() | ||||||
|   add_definitions(-DUSE_OPENCV4) |   find_package(OpenCV REQUIRED) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | if(OpenCV_FOUND) | ||||||
|  | 
 | ||||||
|  | #message(STATUS "Found OpenCV: ${OpenCV_VERSION}") | ||||||
|  | 
 | ||||||
|  | set(WITH_OPENCV TRUE) | ||||||
|  | add_definitions(-DWITH_OPENCV) | ||||||
|  | 
 | ||||||
|  | if(OpenCV_VERSION VERSION_LESS 3.0) | ||||||
|  |   add_definitions(-DWITH_OPENCV2) | ||||||
|  | elseif(OpenCV_VERSION VERSION_LESS 4.0) | ||||||
|  |   add_definitions(-DWITH_OPENCV3) | ||||||
|  | else() | ||||||
|  |   add_definitions(-DWITH_OPENCV4) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| list(FIND OpenCV_LIBS "opencv_world" __index) | list(FIND OpenCV_LIBS "opencv_world" __index) | ||||||
| @ -35,3 +46,9 @@ if(MSVC OR MSYS OR MINGW) | |||||||
| else() | else() | ||||||
|   set(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}") |   set(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}") | ||||||
| endif() | endif() | ||||||
|  | 
 | ||||||
|  | else() | ||||||
|  | 
 | ||||||
|  | set(WITH_OPENCV FALSE) | ||||||
|  | 
 | ||||||
|  | endif() | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								cmake/templates/pkginfo.sh.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,16 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | OpenCV_VERSION=@OpenCV_VERSION@ | ||||||
|  | OpenCV_VERSION_MAJOR=@OpenCV_VERSION_MAJOR@ | ||||||
|  | OpenCV_VERSION_MINOR=@OpenCV_VERSION_MINOR@ | ||||||
|  | OpenCV_VERSION_PATCH=@OpenCV_VERSION_PATCH@ | ||||||
|  | OpenCV_VERSION_STATUS=@OpenCV_VERSION_STATUS@ | ||||||
|  | 
 | ||||||
|  | _contains() { | ||||||
|  |   [ `echo $1 | grep -c "$2"` -gt 0 ] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if _contains "@OpenCV_INCLUDE_DIRS@" "/ros/"; then | ||||||
|  |   ROS_VERSION=$(rosversion -d) | ||||||
|  |   OpenCV_VERSION=ros-$ROS_VERSION | ||||||
|  | fi | ||||||
							
								
								
									
										20
									
								
								doc/build.sh
									
									
									
									
									
								
							
							
						
						| @ -52,16 +52,30 @@ for lang in "${LANGS[@]}"; do | |||||||
|     _mkdir "$OUTPUT/$lang" |     _mkdir "$OUTPUT/$lang" | ||||||
|     _echo_i "doxygen $DOXYFILE" |     _echo_i "doxygen $DOXYFILE" | ||||||
|     doxygen $DOXYFILE |     doxygen $DOXYFILE | ||||||
|  | 
 | ||||||
|  |     version=`cat $DOXYFILE | grep -m1 "^PROJECT_NUMBER\s*=" | \ | ||||||
|  |       sed -E "s/^.*=[[:space:]]*(.*)[[:space:]]*$/\1/g"` | ||||||
|  | 
 | ||||||
|  |     # html | ||||||
|  |     if [ -d "$OUTPUT/$lang/html" ]; then | ||||||
|  |       dirname="mynt-eye-s-sdk-apidoc"; \ | ||||||
|  |         [ -n "$version" ] && dirname="$dirname-$version"; \ | ||||||
|  |         dirname="$dirname-$lang" | ||||||
|  |       cd "$OUTPUT/$lang" | ||||||
|  |       [ -d "$dirname" ] && rm -rf "$dirname" | ||||||
|  |       mv "html" "$dirname" && zip -r "$dirname.zip" "$dirname" | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     # latex | ||||||
|     if [ $pdflatex_FOUND ] && [ -f "$OUTPUT/$lang/latex/Makefile" ]; then |     if [ $pdflatex_FOUND ] && [ -f "$OUTPUT/$lang/latex/Makefile" ]; then | ||||||
|       _echo_in "doxygen make latex" |       _echo_in "doxygen make latex" | ||||||
|       version=`cat $DOXYFILE | grep -m1 "^PROJECT_NUMBER\s*=" | \ |       filename="mynt-eye-s-sdk-apidoc"; \ | ||||||
|         sed -E "s/^.*=[[:space:]]*(.*)[[:space:]]*$/\1/g"` |  | ||||||
|       filename="mynt-eye-sdk-apidoc"; \ |  | ||||||
|         [ -n "$version" ] && filename="$filename-$version"; \ |         [ -n "$version" ] && filename="$filename-$version"; \ | ||||||
|         filename="$filename-$lang.pdf" |         filename="$filename-$lang.pdf" | ||||||
|       cd "$OUTPUT/$lang/latex" && _texcjk refman.tex && make |       cd "$OUTPUT/$lang/latex" && _texcjk refman.tex && make | ||||||
|       [ -f "refman.pdf" ] && mv "refman.pdf" "../$filename" |       [ -f "refman.pdf" ] && mv "refman.pdf" "../$filename" | ||||||
|     fi |     fi | ||||||
|  | 
 | ||||||
|     _echo_d "doxygen completed" |     _echo_d "doxygen completed" | ||||||
|   else |   else | ||||||
|     _echo_e "$DOXYFILE not found" |     _echo_e "$DOXYFILE not found" | ||||||
|  | |||||||
| @ -32,19 +32,19 @@ DOXYFILE_ENCODING      = UTF-8 | |||||||
| # title of most generated pages and in a few other places. | # title of most generated pages and in a few other places. | ||||||
| # The default value is: My Project. | # The default value is: My Project. | ||||||
| 
 | 
 | ||||||
| PROJECT_NAME           = "MYNT EYE SDK" | PROJECT_NAME           = "MYNT EYE S SDK" | ||||||
| 
 | 
 | ||||||
| # The PROJECT_NUMBER tag can be used to enter a project or revision number. This | # The PROJECT_NUMBER tag can be used to enter a project or revision number. This | ||||||
| # could be handy for archiving the generated documentation or if some version | # could be handy for archiving the generated documentation or if some version | ||||||
| # control system is used. | # control system is used. | ||||||
| 
 | 
 | ||||||
| PROJECT_NUMBER         = 2.0.1-rc1 | PROJECT_NUMBER         = 2.2.2-rc0 | ||||||
| 
 | 
 | ||||||
| # Using the PROJECT_BRIEF tag one can provide an optional one line description | # Using the PROJECT_BRIEF tag one can provide an optional one line description | ||||||
| # for a project that appears at the top of each page and should give viewer a | # for a project that appears at the top of each page and should give viewer a | ||||||
| # quick idea about the purpose of the project. Keep the description short. | # quick idea about the purpose of the project. Keep the description short. | ||||||
| 
 | 
 | ||||||
| PROJECT_BRIEF          = http://www.myntai.com/camera | PROJECT_BRIEF          = http://www.myntai.com/mynteye/standard | ||||||
| 
 | 
 | ||||||
| # With the PROJECT_LOGO tag one can specify a logo or an icon that is included | # With the PROJECT_LOGO tag one can specify a logo or an icon that is included | ||||||
| # in the documentation. The maximum height of the logo should not exceed 55 | # in the documentation. The maximum height of the logo should not exceed 55 | ||||||
| @ -801,7 +801,7 @@ INPUT                  = mainpage.md \ | |||||||
|                          specs_ctrl.md \ |                          specs_ctrl.md \ | ||||||
|                          spec_control_api.md \ |                          spec_control_api.md \ | ||||||
|                          spec_control_channel.md \ |                          spec_control_channel.md \ | ||||||
|                          ../../_install/include |                          /usr/local/include/mynteye | ||||||
| 
 | 
 | ||||||
| # This tag can be used to specify the character encoding of the source files | # This tag can be used to specify the character encoding of the source files | ||||||
| # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses | # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses | ||||||
| @ -884,7 +884,8 @@ RECURSIVE              = YES | |||||||
| # Note that relative paths are relative to the directory from which doxygen is | # Note that relative paths are relative to the directory from which doxygen is | ||||||
| # run. | # run. | ||||||
| 
 | 
 | ||||||
| EXCLUDE                = | EXCLUDE                = /usr/local/include/mynteye/logger.h \ | ||||||
|  |                          /usr/local/include/mynteye/miniglog.h | ||||||
| 
 | 
 | ||||||
| # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or | # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or | ||||||
| # directories that are symbolic links (a Unix file system feature) are excluded | # directories that are symbolic links (a Unix file system feature) are excluded | ||||||
| @ -1309,7 +1310,7 @@ DOCSET_PUBLISHER_ID    = com.slightech.mynteye.documentation | |||||||
| # The default value is: Publisher. | # The default value is: Publisher. | ||||||
| # This tag requires that the tag GENERATE_DOCSET is set to YES. | # This tag requires that the tag GENERATE_DOCSET is set to YES. | ||||||
| 
 | 
 | ||||||
| DOCSET_PUBLISHER_NAME  = MYNT EYE SDK | DOCSET_PUBLISHER_NAME  = MYNT EYE S SDK | ||||||
| 
 | 
 | ||||||
| # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three | # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three | ||||||
| # additional HTML index files: index.hhp, index.hhc, and index.hhk. The | # additional HTML index files: index.hhp, index.hhc, and index.hhk. The | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| # MYNT EYE SDK {#mainpage} | # MYNT EYE S SDK {#mainpage} | ||||||
| 
 | 
 | ||||||
| * <a class="el" href="annotated.html">API Classes</a> | * <a class="el" href="annotated.html">API Classes</a> | ||||||
| * <a class="el" href="modules.html">API Modules</a> | * <a class="el" href="modules.html">API Modules</a> | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ There are two control modes, one is through UVC standard protocol, the other is | |||||||
| 
 | 
 | ||||||
| | Name | Field | Bytes | Default | Min | Max | Stored | Flash Address | Channel | Note | | | Name | Field | Bytes | Default | Min | Max | Stored | Flash Address | Channel | Note | | ||||||
| | :--- | :---- | :---- | :------ | :-- | :-- | :----- | :------------ | :------ | :----- | | | :--- | :---- | :---- | :------ | :-- | :-- | :----- | :------------ | :------ | :----- | | ||||||
| | Frame rate | frame_rate | 2 | 25 | 10 | √ | 0x21 | XU_CAM_CTRL | values: {10,15,20,25,30,35,40,45,50,55} | | | Frame rate | frame_rate | 2 | 25 | 10 | 60 | √ | 0x21 | XU_CAM_CTRL | values: {10,15,20,25,30,35,40,45,50,55,60} | | ||||||
| | IMU frequency | imu_frequency | 2 | 200 | 100 | 500 | √ | 0x23 | XU_CAM_CTRL | values: {100,200,250,333,500} | | | IMU frequency | imu_frequency | 2 | 200 | 100 | 500 | √ | 0x23 | XU_CAM_CTRL | values: {100,200,250,333,500} | | ||||||
| | Exposure mode | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0: enable auto-exposure; 1: manual-exposure | | | Exposure mode | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0: enable auto-exposure; 1: manual-exposure | | ||||||
| | Max gain | max_gain | 2 | 48 | 0 | 48 | √ | 0x1D | XU_CAM_CTRL | valid if auto-exposure | | | Max gain | max_gain | 2 | 48 | 0 | 48 | √ | 0x1D | XU_CAM_CTRL | valid if auto-exposure | | ||||||
|  | |||||||
| @ -32,19 +32,19 @@ DOXYFILE_ENCODING      = UTF-8 | |||||||
| # title of most generated pages and in a few other places. | # title of most generated pages and in a few other places. | ||||||
| # The default value is: My Project. | # The default value is: My Project. | ||||||
| 
 | 
 | ||||||
| PROJECT_NAME           = "MYNT EYE SDK" | PROJECT_NAME           = "MYNT EYE S SDK" | ||||||
| 
 | 
 | ||||||
| # The PROJECT_NUMBER tag can be used to enter a project or revision number. This | # The PROJECT_NUMBER tag can be used to enter a project or revision number. This | ||||||
| # could be handy for archiving the generated documentation or if some version | # could be handy for archiving the generated documentation or if some version | ||||||
| # control system is used. | # control system is used. | ||||||
| 
 | 
 | ||||||
| PROJECT_NUMBER         = 2.0.1-rc1 | PROJECT_NUMBER         = 2.2.2-rc0 | ||||||
| 
 | 
 | ||||||
| # Using the PROJECT_BRIEF tag one can provide an optional one line description | # Using the PROJECT_BRIEF tag one can provide an optional one line description | ||||||
| # for a project that appears at the top of each page and should give viewer a | # for a project that appears at the top of each page and should give viewer a | ||||||
| # quick idea about the purpose of the project. Keep the description short. | # quick idea about the purpose of the project. Keep the description short. | ||||||
| 
 | 
 | ||||||
| PROJECT_BRIEF          = http://www.myntai.com/camera | PROJECT_BRIEF          = http://www.myntai.com/mynteye/standard | ||||||
| 
 | 
 | ||||||
| # With the PROJECT_LOGO tag one can specify a logo or an icon that is included | # With the PROJECT_LOGO tag one can specify a logo or an icon that is included | ||||||
| # in the documentation. The maximum height of the logo should not exceed 55 | # in the documentation. The maximum height of the logo should not exceed 55 | ||||||
| @ -801,7 +801,7 @@ INPUT                  = mainpage.md \ | |||||||
|                          specs_ctrl.md \ |                          specs_ctrl.md \ | ||||||
|                          spec_control_api.md \ |                          spec_control_api.md \ | ||||||
|                          spec_control_channel.md \ |                          spec_control_channel.md \ | ||||||
|                          ../../_install/include |                          /usr/local/include/mynteye | ||||||
| 
 | 
 | ||||||
| # This tag can be used to specify the character encoding of the source files | # This tag can be used to specify the character encoding of the source files | ||||||
| # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses | # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses | ||||||
| @ -884,7 +884,8 @@ RECURSIVE              = YES | |||||||
| # Note that relative paths are relative to the directory from which doxygen is | # Note that relative paths are relative to the directory from which doxygen is | ||||||
| # run. | # run. | ||||||
| 
 | 
 | ||||||
| EXCLUDE                = | EXCLUDE                = /usr/local/include/mynteye/logger.h \ | ||||||
|  |                          /usr/local/include/mynteye/miniglog.h | ||||||
| 
 | 
 | ||||||
| # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or | # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or | ||||||
| # directories that are symbolic links (a Unix file system feature) are excluded | # directories that are symbolic links (a Unix file system feature) are excluded | ||||||
| @ -1309,7 +1310,7 @@ DOCSET_PUBLISHER_ID    = com.slightech.mynteye.documentation | |||||||
| # The default value is: Publisher. | # The default value is: Publisher. | ||||||
| # This tag requires that the tag GENERATE_DOCSET is set to YES. | # This tag requires that the tag GENERATE_DOCSET is set to YES. | ||||||
| 
 | 
 | ||||||
| DOCSET_PUBLISHER_NAME  = MYNT EYE SDK | DOCSET_PUBLISHER_NAME  = MYNT EYE S SDK | ||||||
| 
 | 
 | ||||||
| # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three | # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three | ||||||
| # additional HTML index files: index.hhp, index.hhc, and index.hhk. The | # additional HTML index files: index.hhp, index.hhc, and index.hhk. The | ||||||
|  | |||||||
| @ -5,13 +5,13 @@ | |||||||
| ## 获取代码 | ## 获取代码 | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| git clone https://github.com/slightech/MYNT-EYE-SDK-2.git | git clone https://github.com/slightech/MYNT-EYE-S-SDK.git | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## 准备依赖 | ## 准备依赖 | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| cd mynt-eye-sdk-2/ | cd mynt-eye-s-sdk/ | ||||||
| make init | make init | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -72,13 +72,13 @@ GNU Make 4.2.1 | |||||||
| ## 获取代码 | ## 获取代码 | ||||||
| 
 | 
 | ||||||
| ```cmd | ```cmd | ||||||
| >git clone https://github.com/slightech/MYNT-EYE-SDK-2.git | >git clone https://github.com/slightech/MYNT-EYE-S-SDK.git | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## 准备依赖 | ## 准备依赖 | ||||||
| 
 | 
 | ||||||
| ```cmd | ```cmd | ||||||
| >cd mynt-eye-sdk-2 | >cd mynt-eye-s-sdk | ||||||
| >make init | >make init | ||||||
| Make init | Make init | ||||||
| Init deps | Init deps | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| # MYNT EYE SDK {#mainpage} | # MYNT EYE S SDK {#mainpage} | ||||||
| 
 | 
 | ||||||
| * <a class="el" href="annotated.html">API 类</a> | * <a class="el" href="annotated.html">API 类</a> | ||||||
| * <a class="el" href="modules.html">API 模块</a> | * <a class="el" href="modules.html">API 模块</a> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
| 
 | 
 | ||||||
| | 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 所属通道 | 说明 | | | 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 所属通道 | 说明 | | ||||||
| | :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----------- | :----- | | | :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----------- | :----- | | ||||||
| | 图像帧率 | frame_rate | 2 | 25 | 10 | √ | 0x21 | XU_CAM_CTRL | 步进为5,即有效值为{10,15,20,25,30,35,40,45,50,55} | | | 图像帧率 | frame_rate | 2 | 25 | 10 | 60 | √ | 0x21 | XU_CAM_CTRL | 步进为5,即有效值为{10,15,20,25,30,35,40,45,50,55,60} | | ||||||
| | IMU 频率 | imu_frequency | 2 | 200 | 100 | 500 | √ | 0x23 | XU_CAM_CTRL | 有效值为{100,200,250,333,500} | | | IMU 频率 | imu_frequency | 2 | 200 | 100 | 500 | √ | 0x23 | XU_CAM_CTRL | 有效值为{100,200,250,333,500} | | ||||||
| | 曝光模式 | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0:开启自动曝光; 1:关闭 | | | 曝光模式 | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0:开启自动曝光; 1:关闭 | | ||||||
| | 最大增益 | max_gain | 2 | 48 | 0 | 48 | √ | 0x1D | XU_CAM_CTRL | 开始自动曝光,可设定的阈值 | | | 最大增益 | max_gain | 2 | 48 | 0 | 48 | √ | 0x1D | XU_CAM_CTRL | 开始自动曝光,可设定的阈值 | | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/api.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/api/api.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/callbacks.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/device/callbacks.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/context.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/device/context.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/device.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/device/device.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/files.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/util/files.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/glog_init.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/logger.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/object.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/api/object.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/plugin.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/api/plugin.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/strings.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/util/strings.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/times.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/util/times.h" | ||||||
							
								
								
									
										1
									
								
								include/deprecated/mynteye/utils.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | #include "mynteye/device/utils.h" | ||||||
| @ -11,17 +11,17 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_API_H_  // NOLINT
 | #ifndef MYNTEYE_API_API_H_ | ||||||
| #define MYNTEYE_API_H_ | #define MYNTEYE_API_API_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <opencv2/core/core.hpp> |  | ||||||
| 
 |  | ||||||
| #include <limits> | #include <limits> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/core/core.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| #include "mynteye/types.h" | #include "mynteye/types.h" | ||||||
| 
 | 
 | ||||||
| @ -49,6 +49,8 @@ struct MYNTEYE_API StreamData { | |||||||
|   cv::Mat frame; |   cv::Mat frame; | ||||||
|   /** Raw frame. */ |   /** Raw frame. */ | ||||||
|   std::shared_ptr<device::Frame> frame_raw; |   std::shared_ptr<device::Frame> frame_raw; | ||||||
|  |   /** Frame ID. */ | ||||||
|  |   std::uint16_t frame_id; | ||||||
| 
 | 
 | ||||||
|   bool operator==(const StreamData &other) const { |   bool operator==(const StreamData &other) const { | ||||||
|     if (img && other.img) { |     if (img && other.img) { | ||||||
| @ -280,4 +282,4 @@ class MYNTEYE_API API { | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_API_H_ NOLINT
 | #endif  // MYNTEYE_API_API_H_
 | ||||||
| @ -11,18 +11,20 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_OBJECT_H_  // NOLINT
 | #ifndef MYNTEYE_API_OBJECT_H_ | ||||||
| #define MYNTEYE_OBJECT_H_ | #define MYNTEYE_API_OBJECT_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <opencv2/core/core.hpp> |  | ||||||
| 
 |  | ||||||
| #include <memory> | #include <memory> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/core/core.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_BEGIN_NAMESPACE | MYNTEYE_BEGIN_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | struct ImgData; | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Input & output object. |  * Input & output object. | ||||||
|  */ |  */ | ||||||
| @ -56,14 +58,22 @@ struct MYNTEYE_API Object { | |||||||
|  */ |  */ | ||||||
| struct MYNTEYE_API ObjMat : public Object { | struct MYNTEYE_API ObjMat : public Object { | ||||||
|   ObjMat() = default; |   ObjMat() = default; | ||||||
|   explicit ObjMat(const cv::Mat &value) : value(value) {} |   ObjMat(const cv::Mat &value, std::uint16_t id, | ||||||
|  |          const std::shared_ptr<ImgData> &data) | ||||||
|  |       : value(value), id(id), data(data) {} | ||||||
| 
 | 
 | ||||||
|   /** The value */ |   /** The value */ | ||||||
|   cv::Mat value; |   cv::Mat value; | ||||||
|  |   /** The id **/ | ||||||
|  |   std::uint16_t id; | ||||||
|  |   /** The data **/ | ||||||
|  |   std::shared_ptr<ImgData> data; | ||||||
| 
 | 
 | ||||||
|   Object *Clone() const { |   Object *Clone() const { | ||||||
|     ObjMat *mat = new ObjMat; |     ObjMat *mat = new ObjMat; | ||||||
|     mat->value = value.clone(); |     mat->value = value.clone(); | ||||||
|  |     mat->id = id; | ||||||
|  |     mat->data = data; | ||||||
|     return mat; |     return mat; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -77,19 +87,35 @@ struct MYNTEYE_API ObjMat : public Object { | |||||||
|  */ |  */ | ||||||
| struct MYNTEYE_API ObjMat2 : public Object { | struct MYNTEYE_API ObjMat2 : public Object { | ||||||
|   ObjMat2() = default; |   ObjMat2() = default; | ||||||
|   ObjMat2(const cv::Mat &first, const cv::Mat &second) |   ObjMat2(const cv::Mat &first, std::uint16_t first_id, | ||||||
|       : first(first), second(second) {} |           const std::shared_ptr<ImgData> &first_data, | ||||||
|  |           const cv::Mat &second, std::uint16_t second_id, | ||||||
|  |           const std::shared_ptr<ImgData> &second_data) | ||||||
|  |       : first(first), first_id(first_id), first_data(first_data), | ||||||
|  |         second(second), second_id(second_id), second_data(second_data) {} | ||||||
| 
 | 
 | ||||||
|   /** The first value */ |   /** The first value */ | ||||||
|   cv::Mat first; |   cv::Mat first; | ||||||
|  |   /** The first id **/ | ||||||
|  |   std::uint16_t first_id; | ||||||
|  |   /** The first data **/ | ||||||
|  |   std::shared_ptr<ImgData> first_data; | ||||||
| 
 | 
 | ||||||
|   /** The second value */ |   /** The second value */ | ||||||
|   cv::Mat second; |   cv::Mat second; | ||||||
|  |   /** The second id **/ | ||||||
|  |   std::uint16_t second_id; | ||||||
|  |   /** The second data **/ | ||||||
|  |   std::shared_ptr<ImgData> second_data; | ||||||
| 
 | 
 | ||||||
|   Object *Clone() const { |   Object *Clone() const { | ||||||
|     ObjMat2 *mat2 = new ObjMat2; |     ObjMat2 *mat2 = new ObjMat2; | ||||||
|     mat2->first = first.clone(); |     mat2->first = first.clone(); | ||||||
|  |     mat2->first_id = first_id; | ||||||
|  |     mat2->first_data = first_data; | ||||||
|     mat2->second = second.clone(); |     mat2->second = second.clone(); | ||||||
|  |     mat2->second_id = second_id; | ||||||
|  |     mat2->second_data = second_data; | ||||||
|     return mat2; |     return mat2; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -100,4 +126,4 @@ struct MYNTEYE_API ObjMat2 : public Object { | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_OBJECT_H_  NOLINT
 | #endif  // MYNTEYE_API_OBJECT_H_
 | ||||||
| @ -11,14 +11,14 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_PLUGIN_H_  // NOLINT
 | #ifndef MYNTEYE_API_PLUGIN_H_ | ||||||
| #define MYNTEYE_PLUGIN_H_ | #define MYNTEYE_API_PLUGIN_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <opencv2/core/core.hpp> |  | ||||||
| 
 |  | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/core/core.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| 
 | 
 | ||||||
| #ifndef MYNTEYE_PLUGIN_VERSION_CODE | #ifndef MYNTEYE_PLUGIN_VERSION_CODE | ||||||
| @ -53,8 +53,8 @@ class MYNTEYE_API Plugin { | |||||||
|    * @return `true` if you process rectify. |    * @return `true` if you process rectify. | ||||||
|    */ |    */ | ||||||
|   virtual bool OnRectifyProcess(Object *const in, Object *const out) { |   virtual bool OnRectifyProcess(Object *const in, Object *const out) { | ||||||
|     UNUSED(in) |     MYNTEYE_UNUSED(in) | ||||||
|     UNUSED(out) |     MYNTEYE_UNUSED(out) | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -65,8 +65,8 @@ class MYNTEYE_API Plugin { | |||||||
|    * @return `true` if you process disparity. |    * @return `true` if you process disparity. | ||||||
|    */ |    */ | ||||||
|   virtual bool OnDisparityProcess(Object *const in, Object *const out) { |   virtual bool OnDisparityProcess(Object *const in, Object *const out) { | ||||||
|     UNUSED(in) |     MYNTEYE_UNUSED(in) | ||||||
|     UNUSED(out) |     MYNTEYE_UNUSED(out) | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -78,8 +78,8 @@ class MYNTEYE_API Plugin { | |||||||
|    */ |    */ | ||||||
|   virtual bool OnDisparityNormalizedProcess( |   virtual bool OnDisparityNormalizedProcess( | ||||||
|       Object *const in, Object *const out) { |       Object *const in, Object *const out) { | ||||||
|     UNUSED(in) |     MYNTEYE_UNUSED(in) | ||||||
|     UNUSED(out) |     MYNTEYE_UNUSED(out) | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -90,8 +90,8 @@ class MYNTEYE_API Plugin { | |||||||
|    * @return `true` if you process points. |    * @return `true` if you process points. | ||||||
|    */ |    */ | ||||||
|   virtual bool OnPointsProcess(Object *const in, Object *const out) { |   virtual bool OnPointsProcess(Object *const in, Object *const out) { | ||||||
|     UNUSED(in) |     MYNTEYE_UNUSED(in) | ||||||
|     UNUSED(out) |     MYNTEYE_UNUSED(out) | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -102,8 +102,8 @@ class MYNTEYE_API Plugin { | |||||||
|    * @return `true` if you process depth. |    * @return `true` if you process depth. | ||||||
|    */ |    */ | ||||||
|   virtual bool OnDepthProcess(Object *const in, Object *const out) { |   virtual bool OnDepthProcess(Object *const in, Object *const out) { | ||||||
|     UNUSED(in) |     MYNTEYE_UNUSED(in) | ||||||
|     UNUSED(out) |     MYNTEYE_UNUSED(out) | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -135,6 +135,7 @@ MYNTEYE_API mynteye::Plugin *plugin_create(); | |||||||
|  * Destroy the plugin. |  * Destroy the plugin. | ||||||
|  */ |  */ | ||||||
| MYNTEYE_API void plugin_destroy(mynteye::Plugin *plugin); | MYNTEYE_API void plugin_destroy(mynteye::Plugin *plugin); | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_PLUGIN_H_ NOLINT
 | #endif  // MYNTEYE_API_PLUGIN_H_
 | ||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_CALLBACKS_H_  // NOLINT
 | #ifndef MYNTEYE_DEVICE_CALLBACKS_H_ | ||||||
| #define MYNTEYE_CALLBACKS_H_ | #define MYNTEYE_DEVICE_CALLBACKS_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
| @ -113,6 +113,8 @@ struct MYNTEYE_API StreamData { | |||||||
|   std::shared_ptr<ImgData> img; |   std::shared_ptr<ImgData> img; | ||||||
|   /** Frame. */ |   /** Frame. */ | ||||||
|   std::shared_ptr<Frame> frame; |   std::shared_ptr<Frame> frame; | ||||||
|  |   /** Frame ID. */ | ||||||
|  |   std::uint16_t frame_id; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -131,4 +133,4 @@ using MotionCallback = std::function<void(const MotionData &data)>; | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_CALLBACKS_H_ NOLINT
 | #endif  // MYNTEYE_DEVICE_CALLBACKS_H_
 | ||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_CONTEXT_H_  // NOLINT
 | #ifndef MYNTEYE_DEVICE_CONTEXT_H_ | ||||||
| #define MYNTEYE_CONTEXT_H_ | #define MYNTEYE_DEVICE_CONTEXT_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| @ -53,4 +53,4 @@ class MYNTEYE_API Context { | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_CONTEXT_H_ NOLINT
 | #endif  // MYNTEYE_DEVICE_CONTEXT_H_
 | ||||||
| @ -11,20 +11,19 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_DEVICE_H_  // NOLINT
 | #ifndef MYNTEYE_DEVICE_DEVICE_H_ | ||||||
| #define MYNTEYE_DEVICE_H_ | #define MYNTEYE_DEVICE_DEVICE_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <limits> |  | ||||||
| #include <map> | #include <map> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <mutex> | #include <mutex> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/callbacks.h" |  | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| #include "mynteye/types.h" | #include "mynteye/types.h" | ||||||
|  | #include "mynteye/device/callbacks.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_BEGIN_NAMESPACE | MYNTEYE_BEGIN_NAMESPACE | ||||||
| 
 | 
 | ||||||
| @ -245,8 +244,11 @@ class MYNTEYE_API Device { | |||||||
|   /**
 |   /**
 | ||||||
|    * Enable cache motion datas. |    * Enable cache motion datas. | ||||||
|    */ |    */ | ||||||
|   void EnableMotionDatas( |   void EnableMotionDatas(); | ||||||
|       std::size_t max_size = std::numeric_limits<std::size_t>::max()); |   /**
 | ||||||
|  |    * Enable cache motion datas. | ||||||
|  |    */ | ||||||
|  |   void EnableMotionDatas(std::size_t max_size); | ||||||
|   /**
 |   /**
 | ||||||
|    * Get the motion datas. |    * Get the motion datas. | ||||||
|    */ |    */ | ||||||
| @ -322,4 +324,4 @@ class MYNTEYE_API Device { | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_DEVICE_H_ NOLINT
 | #endif  // MYNTEYE_DEVICE_DEVICE_H_
 | ||||||
| @ -11,11 +11,12 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_UTILS_H_  // NOLINT
 | #ifndef MYNTEYE_DEVICE_UTILS_H_ | ||||||
| #define MYNTEYE_UTILS_H_ | #define MYNTEYE_DEVICE_UTILS_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
|  | #include <string> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| 
 | 
 | ||||||
| @ -55,8 +56,22 @@ namespace utils { | |||||||
| MYNTEYE_API float get_real_exposure_time( | MYNTEYE_API float get_real_exposure_time( | ||||||
|     std::int32_t frame_rate, std::uint16_t exposure_time); |     std::int32_t frame_rate, std::uint16_t exposure_time); | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * @ingroup utils | ||||||
|  |  *  | ||||||
|  |  * Get sdk root dir. | ||||||
|  |  */ | ||||||
|  | MYNTEYE_API std::string get_sdk_root_dir(); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @ingroup utils | ||||||
|  |  *  | ||||||
|  |  * Get sdk install dir. | ||||||
|  |  */ | ||||||
|  | MYNTEYE_API std::string get_sdk_install_dir(); | ||||||
|  | 
 | ||||||
| }  // namespace utils
 | }  // namespace utils
 | ||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_UTILS_H_ NOLINT
 | #endif  // MYNTEYE_DEVICE_UTILS_H_
 | ||||||
| @ -16,72 +16,70 @@ | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #define OS_WIN |   #define MYNTEYE_OS_WIN | ||||||
| #ifdef _WIN64 |   #ifdef _WIN64 | ||||||
| #define OS_WIN64 |     #define MYNTEYE_OS_WIN64 | ||||||
| #else |   #else | ||||||
| #define OS_WIN32 |     #define MYNTEYE_OS_WIN32 | ||||||
| #endif |   #endif | ||||||
| #if defined(__MINGW32__) || defined(__MINGW64__) |   #if defined(__MINGW32__) || defined(__MINGW64__) | ||||||
| #define OS_MINGW |     #define MYNTEYE_OS_MINGW | ||||||
| #ifdef __MINGW64__ |     #ifdef __MINGW64__ | ||||||
| #define OS_MINGW64 |       #define MYNTEYE_OS_MINGW64 | ||||||
| #else |     #else | ||||||
| #define OS_MINGW32 |       #define MYNTEYE_OS_MINGW32 | ||||||
| #endif |     #endif | ||||||
| #elif defined(__CYGWIN__) || defined(__CYGWIN32__) |   #elif defined(__CYGWIN__) || defined(__CYGWIN32__) | ||||||
| #define OS_CYGWIN |     #define MYNTEYE_OS_CYGWIN | ||||||
| #endif |   #endif | ||||||
| #elif __APPLE__ | #elif __APPLE__ | ||||||
| #include "TargetConditionals.h" |   #include <TargetConditionals.h> | ||||||
| #if TARGET_IPHONE_SIMULATOR |   #if TARGET_IPHONE_SIMULATOR | ||||||
| #define OS_IPHONE |     #define MYNTEYE_OS_IPHONE | ||||||
| #define OS_IPHONE_SIMULATOR |     #define MYNTEYE_OS_IPHONE_SIMULATOR | ||||||
| #elif TARGET_OS_IPHONE |   #elif TARGET_OS_IPHONE | ||||||
| #define OS_IPHONE |     #define MYNTEYE_OS_IPHONE | ||||||
| #elif TARGET_OS_MAC |   #elif TARGET_OS_MAC | ||||||
| #define OS_MAC |     #define MYNTEYE_OS_MAC | ||||||
| #else |   #else | ||||||
| #error "Unknown Apple platform" |     #error "Unknown Apple platform" | ||||||
| #endif |   #endif | ||||||
| #elif __ANDROID__ | #elif __ANDROID__ | ||||||
| #define OS_ANDROID |   #define MYNTEYE_OS_ANDROID | ||||||
| #elif __linux__ | #elif __linux__ | ||||||
| #define OS_LINUX |   #define MYNTEYE_OS_LINUX | ||||||
| #elif __unix__ | #elif __unix__ | ||||||
| #define OS_UNIX |   #define MYNTEYE_OS_UNIX | ||||||
| #elif defined(_POSIX_VERSION) | #elif defined(_POSIX_VERSION) | ||||||
| #define OS_POSIX |   #define MYNTEYE_OS_POSIX | ||||||
| #else | #else | ||||||
| #error "Unknown compiler" |   #error "Unknown compiler" | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef OS_WIN | #ifdef MYNTEYE_OS_WIN | ||||||
| #define DECL_EXPORT __declspec(dllexport) | #define MYNTEYE_DECL_EXPORT __declspec(dllexport) | ||||||
| #define DECL_IMPORT __declspec(dllimport) | #define MYNTEYE_DECL_IMPORT __declspec(dllimport) | ||||||
| #define DECL_HIDDEN | #define MYNTEYE_DECL_HIDDEN | ||||||
| #else | #else | ||||||
| #define DECL_EXPORT __attribute__((visibility("default"))) | #define MYNTEYE_DECL_EXPORT __attribute__((visibility("default"))) | ||||||
| #define DECL_IMPORT __attribute__((visibility("default"))) | #define MYNTEYE_DECL_IMPORT __attribute__((visibility("default"))) | ||||||
| #define DECL_HIDDEN __attribute__((visibility("hidden"))) | #define MYNTEYE_DECL_HIDDEN __attribute__((visibility("hidden"))) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if defined(OS_WIN) && !defined(OS_MINGW) && !defined(OS_CYGWIN) | #if defined(MYNTEYE_OS_WIN) && !defined(MYNTEYE_OS_MINGW) && \ | ||||||
| #define OS_SEP "\\" |   !defined(MYNTEYE_OS_CYGWIN) | ||||||
|  | #define MYNTEYE_OS_SEP "\\" | ||||||
| #else | #else | ||||||
| #define OS_SEP "/" | #define MYNTEYE_OS_SEP "/" | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define STRINGIFY_HELPER(X) #X | #define MYNTEYE_STRINGIFY_HELPER(X) #X | ||||||
| #define STRINGIFY(X) STRINGIFY_HELPER(X) | #define MYNTEYE_STRINGIFY(X) MYNTEYE_STRINGIFY_HELPER(X) | ||||||
| 
 | 
 | ||||||
| #define DISABLE_COPY(Class)      \ | #define MYNTEYE_DISABLE_COPY(Class) \ | ||||||
|   Class(const Class &) = delete; \ |   Class(const Class &) = delete; \ | ||||||
|   Class &operator=(const Class &) = delete; |   Class &operator=(const Class &) = delete; | ||||||
| 
 | 
 | ||||||
| #define UNUSED(x) (void)x; | #define MYNTEYE_UNUSED(x) (void)x; | ||||||
| 
 |  | ||||||
| template <typename... T> |  | ||||||
| void unused(T &&...) {} |  | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_GLOBAL_H_
 | #endif  // MYNTEYE_GLOBAL_H_
 | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ struct glog_init { | |||||||
|   } |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define MAX_LOG_LEVEL google::INFO | #define MYNTEYE_MAX_LOG_LEVEL google::INFO | ||||||
| 
 | 
 | ||||||
| #include "mynteye/miniglog.h" | #include "mynteye/miniglog.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| // Ceres Solver - A fast non-linear least squares minimizer
 | // Ceres Solver - A fast non-linear least squares minimizer
 | ||||||
| // Copyright 2015 Google Inc. All rights reserved.
 | // Copyright 2013 Google Inc. All rights reserved.
 | ||||||
| // http://ceres-solver.org/
 | // http://code.google.com/p/ceres-solver/
 | ||||||
| //
 | //
 | ||||||
| // Redistribution and use in source and binary forms, with or without
 | // Redistribution and use in source and binary forms, with or without
 | ||||||
| // modification, are permitted provided that the following conditions are met:
 | // modification, are permitted provided that the following conditions are met:
 | ||||||
| @ -91,14 +91,6 @@ | |||||||
| #ifndef MYNTEYE_MINIGLOG_H_ | #ifndef MYNTEYE_MINIGLOG_H_ | ||||||
| #define MYNTEYE_MINIGLOG_H_ | #define MYNTEYE_MINIGLOG_H_ | ||||||
| 
 | 
 | ||||||
| #ifdef ANDROID |  | ||||||
| #  include <android/log.h> |  | ||||||
| #else |  | ||||||
| #include <pthread.h> |  | ||||||
| #include <sys/time.h> |  | ||||||
| #include <unistd.h> |  | ||||||
| #endif  // ANDROID
 |  | ||||||
| 
 |  | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
| #include <ctime> | #include <ctime> | ||||||
| #include <fstream> | #include <fstream> | ||||||
| @ -108,34 +100,48 @@ | |||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| // For appropriate definition of CERES_EXPORT macro.
 | #include "mynteye/mynteye.h" | ||||||
| // Modified from ceres miniglog version [begin] -------------------------------
 | 
 | ||||||
| //#include "ceres/internal/port.h"
 | #ifdef MYNTEYE_OS_ANDROID | ||||||
| //#include "ceres/internal/disable_warnings.h"
 | #  include <android/log.h> | ||||||
| #define CERES_EXPORT | #endif  // ANDROID
 | ||||||
| // Modified from ceres miniglog version [end] ---------------------------------
 |  | ||||||
| 
 | 
 | ||||||
| // Log severity level constants.
 | // Log severity level constants.
 | ||||||
|  | #ifdef MYNTEYE_OS_WIN | ||||||
|  | 
 | ||||||
|  | const int FATAL   = -1; | ||||||
|  | #ifndef ERROR  // NOT windows.h
 | ||||||
|  | const int ERROR   = 0; | ||||||
|  | #endif | ||||||
|  | const int WARNING = 1; | ||||||
|  | const int INFO    = 2; | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | 
 | ||||||
| const int FATAL   = -3; | const int FATAL   = -3; | ||||||
| const int ERROR   = -2; | const int ERROR   = -2; | ||||||
| const int WARNING = -1; | const int WARNING = -1; | ||||||
| const int INFO    =  0; | const int INFO    =  0; | ||||||
| 
 | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| // ------------------------- Glog compatibility ------------------------------
 | // ------------------------- Glog compatibility ------------------------------
 | ||||||
| 
 | 
 | ||||||
| namespace google { | namespace google { | ||||||
| 
 | 
 | ||||||
| typedef int LogSeverity; | typedef int LogSeverity; | ||||||
| const int INFO    = ::INFO; |  | ||||||
| const int WARNING = ::WARNING; |  | ||||||
| const int ERROR   = ::ERROR; |  | ||||||
| const int FATAL   = ::FATAL; | const int FATAL   = ::FATAL; | ||||||
|  | #ifndef ERROR  // NOT windows.h
 | ||||||
|  | const int ERROR   = ::ERROR; | ||||||
|  | #endif | ||||||
|  | const int WARNING = ::WARNING; | ||||||
|  | const int INFO    = ::INFO; | ||||||
| 
 | 
 | ||||||
| // Sink class used for integration with mock and test functions. If sinks are
 | // Sink class used for integration with mock and test functions. If sinks are
 | ||||||
| // added, all log output is also sent to each sink through the send function.
 | // added, all log output is also sent to each sink through the send function.
 | ||||||
| // In this implementation, WaitTillSent() is called immediately after the send.
 | // In this implementation, WaitTillSent() is called immediately after the send.
 | ||||||
| // This implementation is not thread safe.
 | // This implementation is not thread safe.
 | ||||||
| class CERES_EXPORT LogSink { | class MYNTEYE_API LogSink { | ||||||
|  public: |  public: | ||||||
|   virtual ~LogSink() {} |   virtual ~LogSink() {} | ||||||
|   virtual void send(LogSeverity severity, |   virtual void send(LogSeverity severity, | ||||||
| @ -149,9 +155,12 @@ class CERES_EXPORT LogSink { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Global set of log sinks. The actual object is defined in logging.cc.
 | // Global set of log sinks. The actual object is defined in logging.cc.
 | ||||||
| extern CERES_EXPORT std::set<LogSink *> log_sinks_global; | MYNTEYE_API extern std::set<LogSink *> log_sinks_global; | ||||||
| 
 | 
 | ||||||
| inline void InitGoogleLogging(char *argv) { | // Added by chachi - a runtime global maximum log level. Defined in logging.cc
 | ||||||
|  | MYNTEYE_API extern int log_severity_global; | ||||||
|  | 
 | ||||||
|  | inline void InitGoogleLogging(char */*argv*/) { | ||||||
|   // Do nothing; this is ignored.
 |   // Do nothing; this is ignored.
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -174,20 +183,20 @@ inline void RemoveLogSink(LogSink *sink) { | |||||||
| // defined, output is directed to std::cerr.  This class should not
 | // defined, output is directed to std::cerr.  This class should not
 | ||||||
| // be directly instantiated in code, rather it should be invoked through the
 | // be directly instantiated in code, rather it should be invoked through the
 | ||||||
| // use of the log macros LG, LOG, or VLOG.
 | // use of the log macros LG, LOG, or VLOG.
 | ||||||
| class CERES_EXPORT MessageLogger { | class MYNTEYE_API MessageLogger { | ||||||
|  public: |  public: | ||||||
|   MessageLogger(const char *file, int line, const char *tag, int severity) |   MessageLogger(const char *file, int line, const char *tag, int severity) | ||||||
|     : file_(file), line_(line), tag_(tag), severity_(severity) { |     : file_(file), line_(line), tag_(tag), severity_(severity) { | ||||||
|     // Pre-pend the stream with the file and line number.
 |     // Pre-pend the stream with the file and line number.
 | ||||||
|     StripBasename(std::string(file), &filename_only_); |     StripBasename(std::string(file), &filename_only_); | ||||||
|     stream_ << filename_only_ << ":" << line << " "; |     stream_ << SeverityLabel() << "/" << filename_only_ << ":" << line << " "; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Output the contents of the stream to the proper channel on destruction.
 |   // Output the contents of the stream to the proper channel on destruction.
 | ||||||
|   ~MessageLogger() { |   ~MessageLogger() { | ||||||
|     stream_ << "\n"; |     stream_ << "\n"; | ||||||
| 
 | 
 | ||||||
| #ifdef ANDROID | #ifdef MYNTEYE_OS_ANDROID | ||||||
|     static const int android_log_levels[] = { |     static const int android_log_levels[] = { | ||||||
|         ANDROID_LOG_FATAL,    // LOG(FATAL)
 |         ANDROID_LOG_FATAL,    // LOG(FATAL)
 | ||||||
|         ANDROID_LOG_ERROR,    // LOG(ERROR)
 |         ANDROID_LOG_ERROR,    // LOG(ERROR)
 | ||||||
| @ -213,34 +222,9 @@ class CERES_EXPORT MessageLogger { | |||||||
|                           "terminating.\n"); |                           "terminating.\n"); | ||||||
|     } |     } | ||||||
| #else | #else | ||||||
|     // For Ubuntu/Mac/Windows
 |  | ||||||
|     // If not building on Android, log all output to std::cerr.
 |     // If not building on Android, log all output to std::cerr.
 | ||||||
|     // Get timestamp
 |     std::cerr << stream_.str(); | ||||||
|     timeval curTime; | #endif  // ANDROID
 | ||||||
|     gettimeofday(&curTime, NULL); |  | ||||||
|     int milli = curTime.tv_usec / 1000; |  | ||||||
|     char buffer [20]; |  | ||||||
|     strftime(buffer, 80, "%m-%d %H:%M:%S", localtime(&curTime.tv_sec)); |  | ||||||
|     char time_cstr[24] = ""; |  | ||||||
|     sprintf(time_cstr, "%s:%d ", buffer, milli); |  | ||||||
|     // Get pid & tid
 |  | ||||||
|     char tid_cstr[24] = ""; |  | ||||||
|     pid_t  pid = getpid(); |  | ||||||
|     pthread_t tid = pthread_self(); |  | ||||||
|     sprintf(tid_cstr, "%d/%u ", pid, tid); |  | ||||||
|     if (severity_ == FATAL) { |  | ||||||
|         // Magenta color if fatal
 |  | ||||||
|         std::cerr << "\033[1;35m"<< tid_cstr << time_cstr << SeverityLabelStr() << stream_.str() << "\033[0m"; |  | ||||||
|     } else if (severity_ == ERROR) { |  | ||||||
|         // Red color if error
 |  | ||||||
|         std::cerr << "\033[1;31m"<< tid_cstr << time_cstr << SeverityLabelStr() << stream_.str() << "\033[0m"; |  | ||||||
|     } else if (severity_ == WARNING) { |  | ||||||
|         // Yellow color if warning
 |  | ||||||
|         std::cerr << "\033[1;33m"<< tid_cstr << time_cstr << SeverityLabelStr() << stream_.str() << "\033[0m"; |  | ||||||
|     } else { |  | ||||||
|         std::cerr << tid_cstr << time_cstr << SeverityLabelStr() << stream_.str(); |  | ||||||
|     } |  | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
|     LogToSinks(severity_); |     LogToSinks(severity_); | ||||||
|     WaitForSinks(); |     WaitForSinks(); | ||||||
| @ -258,23 +242,16 @@ class CERES_EXPORT MessageLogger { | |||||||
|  private: |  private: | ||||||
|   void LogToSinks(int severity) { |   void LogToSinks(int severity) { | ||||||
|     time_t rawtime; |     time_t rawtime; | ||||||
|  |     struct tm* timeinfo; | ||||||
|  | 
 | ||||||
|     time (&rawtime); |     time (&rawtime); | ||||||
| 
 |     timeinfo = localtime(&rawtime); | ||||||
|     struct tm timeinfo; |  | ||||||
| #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) |  | ||||||
|     // On Windows, use secure localtime_s not localtime.
 |  | ||||||
|     localtime_s(&timeinfo, &rawtime); |  | ||||||
| #else |  | ||||||
|     // On non-Windows systems, use threadsafe localtime_r not localtime.
 |  | ||||||
|     localtime_r(&rawtime, &timeinfo); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|     std::set<google::LogSink*>::iterator iter; |     std::set<google::LogSink*>::iterator iter; | ||||||
|     // Send the log message to all sinks.
 |     // Send the log message to all sinks.
 | ||||||
|     for (iter = google::log_sinks_global.begin(); |     for (iter = google::log_sinks_global.begin(); | ||||||
|          iter != google::log_sinks_global.end(); ++iter) { |          iter != google::log_sinks_global.end(); ++iter) { | ||||||
|       (*iter)->send(severity, file_.c_str(), filename_only_.c_str(), line_, |       (*iter)->send(severity, file_.c_str(), filename_only_.c_str(), line_, | ||||||
|                     &timeinfo, stream_.str().c_str(), stream_.str().size()); |                     timeinfo, stream_.str().c_str(), stream_.str().size()); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -291,8 +268,8 @@ class CERES_EXPORT MessageLogger { | |||||||
| 
 | 
 | ||||||
|   void StripBasename(const std::string &full_path, std::string *filename) { |   void StripBasename(const std::string &full_path, std::string *filename) { | ||||||
|     // TODO(settinger): Add support for OSs with different path separators.
 |     // TODO(settinger): Add support for OSs with different path separators.
 | ||||||
|     const char kSeparator = '/'; |     // const char kSeparator = '/';
 | ||||||
|     size_t pos = full_path.rfind(kSeparator); |     size_t pos = full_path.rfind(MYNTEYE_OS_SEP); | ||||||
|     if (pos != std::string::npos) { |     if (pos != std::string::npos) { | ||||||
|       *filename = full_path.substr(pos + 1, std::string::npos); |       *filename = full_path.substr(pos + 1, std::string::npos); | ||||||
|     } else { |     } else { | ||||||
| @ -302,34 +279,19 @@ class CERES_EXPORT MessageLogger { | |||||||
| 
 | 
 | ||||||
|   char SeverityLabel() { |   char SeverityLabel() { | ||||||
|     switch (severity_) { |     switch (severity_) { | ||||||
|       case FATAL: |  | ||||||
|         return 'F'; |  | ||||||
|       case ERROR: |  | ||||||
|         return 'E'; |  | ||||||
|       case WARNING: |  | ||||||
|         return 'W'; |  | ||||||
|       case INFO: |       case INFO: | ||||||
|         return 'I'; |         return 'I'; | ||||||
|  |       case WARNING: | ||||||
|  |         return 'W'; | ||||||
|  |       case ERROR: | ||||||
|  |         return 'E'; | ||||||
|  |       case FATAL: | ||||||
|  |         return 'F'; | ||||||
|       default: |       default: | ||||||
|         return 'V'; |         return 'V'; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   std::string SeverityLabelStr() { |  | ||||||
|     switch (severity_) { |  | ||||||
|       case FATAL: |  | ||||||
|         return "FATAL   "; |  | ||||||
|       case ERROR: |  | ||||||
|         return "ERROR   "; |  | ||||||
|       case WARNING: |  | ||||||
|         return "WARNING "; |  | ||||||
|       case INFO: |  | ||||||
|         return "INFO    "; |  | ||||||
|       default: |  | ||||||
|         return "VERBOSE "; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   std::string file_; |   std::string file_; | ||||||
|   std::string filename_only_; |   std::string filename_only_; | ||||||
|   int line_; |   int line_; | ||||||
| @ -343,18 +305,19 @@ class CERES_EXPORT MessageLogger { | |||||||
| // This class is used to explicitly ignore values in the conditional
 | // This class is used to explicitly ignore values in the conditional
 | ||||||
| // logging macros.  This avoids compiler warnings like "value computed
 | // logging macros.  This avoids compiler warnings like "value computed
 | ||||||
| // is not used" and "statement has no effect".
 | // is not used" and "statement has no effect".
 | ||||||
| class CERES_EXPORT LoggerVoidify { | class MYNTEYE_API LoggerVoidify { | ||||||
|  public: |  public: | ||||||
|   LoggerVoidify() { } |   LoggerVoidify() { } | ||||||
|   // This has to be an operator with a precedence lower than << but
 |   // This has to be an operator with a precedence lower than << but
 | ||||||
|   // higher than ?:
 |   // higher than ?:
 | ||||||
|   void operator&(const std::ostream &s) { } |   void operator&(const std::ostream &/*s*/) { } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Log only if condition is met.  Otherwise evaluates to void.
 | // Log only if condition is met.  Otherwise evaluates to void.
 | ||||||
| #define LOG_IF(severity, condition) \ | #define LOG_IF(severity, condition) \ | ||||||
|     !(condition) ? (void) 0 : LoggerVoidify() & \ |   (static_cast<int>(severity) > google::log_severity_global || !(condition)) ? \ | ||||||
|       MessageLogger((char *)__FILE__, __LINE__, "native", severity).stream() |   (void) 0 : LoggerVoidify() &                                          \ | ||||||
|  |   MessageLogger((char *)__FILE__, __LINE__, "native", severity).stream() | ||||||
| 
 | 
 | ||||||
| // Log only if condition is NOT met.  Otherwise evaluates to void.
 | // Log only if condition is NOT met.  Otherwise evaluates to void.
 | ||||||
| #define LOG_IF_FALSE(severity, condition) LOG_IF(severity, !(condition)) | #define LOG_IF_FALSE(severity, condition) LOG_IF(severity, !(condition)) | ||||||
| @ -362,23 +325,46 @@ class CERES_EXPORT LoggerVoidify { | |||||||
| // LG is a convenient shortcut for LOG(INFO). Its use is in new
 | // LG is a convenient shortcut for LOG(INFO). Its use is in new
 | ||||||
| // google3 code is discouraged and the following shortcut exists for
 | // google3 code is discouraged and the following shortcut exists for
 | ||||||
| // backward compatibility with existing code.
 | // backward compatibility with existing code.
 | ||||||
| #ifdef MAX_LOG_LEVEL | #ifdef MYNTEYE_MAX_LOG_LEVEL | ||||||
| #  define LOG(n)  LOG_IF(n, n <= MAX_LOG_LEVEL) | #  define LOG(n)  LOG_IF(n, (n <= MYNTEYE_MAX_LOG_LEVEL)) | ||||||
| #  define VLOG(n) LOG_IF(n, n <= MAX_LOG_LEVEL) | #  define VLOG(n) LOG_IF(n, (n <= MYNTEYE_MAX_LOG_LEVEL)) | ||||||
| #  define LG      LOG_IF(INFO, INFO <= MAX_LOG_LEVEL) | #  define LG      LOG_IF(INFO, (INFO <= MYNTEYE_MAX_LOG_LEVEL)) | ||||||
| #  define VLOG_IF(n, condition) LOG_IF(n, (n <= MAX_LOG_LEVEL) && condition) | #  define VLOG_IF(n, condition)                                         \ | ||||||
|  |     LOG_IF(n, (n <= MYNTEYE_MAX_LOG_LEVEL) && condition) | ||||||
| #else | #else | ||||||
| #  define LOG(n)  MessageLogger((char *)__FILE__, __LINE__, "native", n).stream()    // NOLINT
 | #  define LOG(n)  LOG_IF(n, true) | ||||||
| #  define VLOG(n) MessageLogger((char *)__FILE__, __LINE__, "native", n).stream()    // NOLINT
 | #  define VLOG(n) LOG_IF(n, true) | ||||||
| #  define LG      MessageLogger((char *)__FILE__, __LINE__, "native", INFO).stream() // NOLINT
 | #  define LG      LOG_IF(INFO, true) | ||||||
| #  define VLOG_IF(n, condition) LOG_IF(n, condition) | #  define VLOG_IF(n, condition) LOG_IF(n, condition) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| // Currently, VLOG is always on for levels below MAX_LOG_LEVEL.
 | // Currently, VLOG is always on for levels below MYNTEYE_MAX_LOG_LEVEL.
 | ||||||
| #ifndef MAX_LOG_LEVEL | #ifndef MYNTEYE_MAX_LOG_LEVEL | ||||||
| #  define VLOG_IS_ON(x) (1) | #  define VLOG_IS_ON(x) (1) | ||||||
| #else | #else | ||||||
| #  define VLOG_IS_ON(x) (x <= MAX_LOG_LEVEL) | #  define VLOG_IS_ON(x) (x <= MYNTEYE_MAX_LOG_LEVEL) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef MYNTEYE_OS_WIN  // INFO is 2, change VLOG(2) to VLOG(4)
 | ||||||
|  | #undef VLOG | ||||||
|  | #undef VLOG_IF | ||||||
|  | #undef VLOG_IS_ON | ||||||
|  | 
 | ||||||
|  | #ifdef MYNTEYE_MAX_LOG_LEVEL | ||||||
|  | #  define VLOG(n) LOG_IF(n+2, (n+2 <= MYNTEYE_MAX_LOG_LEVEL)) | ||||||
|  | #  define VLOG_IF(n, condition)                                         \ | ||||||
|  |     LOG_IF(n+2, (n+2 <= MYNTEYE_MAX_LOG_LEVEL) && condition) | ||||||
|  | #else | ||||||
|  | #  define VLOG(n) LOG_IF(n+2, true) | ||||||
|  | #  define VLOG_IF(n, condition) LOG_IF(n+2, condition) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef MYNTEYE_MAX_LOG_LEVEL | ||||||
|  | #  define VLOG_IS_ON(x) (1+2) | ||||||
|  | #else | ||||||
|  | #  define VLOG_IS_ON(x) (x+2 <= MYNTEYE_MAX_LOG_LEVEL) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef NDEBUG | #ifndef NDEBUG | ||||||
| @ -392,8 +378,7 @@ class CERES_EXPORT LoggerVoidify { | |||||||
| // Log a message and terminate.
 | // Log a message and terminate.
 | ||||||
| template<class T> | template<class T> | ||||||
| void LogMessageFatal(const char *file, int line, const T &message) { | void LogMessageFatal(const char *file, int line, const T &message) { | ||||||
|   MessageLogger((char *)__FILE__, __LINE__, "native", FATAL).stream() |   MessageLogger(file, line, "native", FATAL).stream() << message; | ||||||
|       << message; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ---------------------------- CHECK macros ---------------------------------
 | // ---------------------------- CHECK macros ---------------------------------
 | ||||||
| @ -416,7 +401,7 @@ void LogMessageFatal(const char *file, int line, const T &message) { | |||||||
| 
 | 
 | ||||||
| // Generic binary operator check macro. This should not be directly invoked,
 | // Generic binary operator check macro. This should not be directly invoked,
 | ||||||
| // instead use the binary comparison macros defined below.
 | // instead use the binary comparison macros defined below.
 | ||||||
| #define CHECK_OP(val1, val2, op) LOG_IF_FALSE(FATAL, ((val1) op (val2))) \ | #define CHECK_OP(val1, val2, op) LOG_IF_FALSE(FATAL, (val1 op val2)) \ | ||||||
|   << "Check failed: " #val1 " " #op " " #val2 " " |   << "Check failed: " #val1 " " #op " " #val2 " " | ||||||
| 
 | 
 | ||||||
| // Check_op macro definitions
 | // Check_op macro definitions
 | ||||||
| @ -427,15 +412,6 @@ void LogMessageFatal(const char *file, int line, const T &message) { | |||||||
| #define CHECK_GE(val1, val2) CHECK_OP(val1, val2, >=) | #define CHECK_GE(val1, val2) CHECK_OP(val1, val2, >=) | ||||||
| #define CHECK_GT(val1, val2) CHECK_OP(val1, val2, >) | #define CHECK_GT(val1, val2) CHECK_OP(val1, val2, >) | ||||||
| 
 | 
 | ||||||
| // qiao.helloworld@gmail.com /tzu.ta.lin@gmail.com add
 |  | ||||||
| // Add logging macros which are missing in glog or are not accessible for
 |  | ||||||
| // whatever reason.
 |  | ||||||
| #define CHECK_NEAR(val1, val2, margin)           \ |  | ||||||
|   do {                                           \ |  | ||||||
|     CHECK_LE((val1), (val2)+(margin));           \ |  | ||||||
|     CHECK_GE((val1), (val2)-(margin));           \ |  | ||||||
|   } while (0) |  | ||||||
| 
 |  | ||||||
| #ifndef NDEBUG | #ifndef NDEBUG | ||||||
| // Debug only versions of CHECK_OP macros.
 | // Debug only versions of CHECK_OP macros.
 | ||||||
| #  define DCHECK_EQ(val1, val2) CHECK_OP(val1, val2, ==) | #  define DCHECK_EQ(val1, val2) CHECK_OP(val1, val2, ==) | ||||||
| @ -444,8 +420,6 @@ void LogMessageFatal(const char *file, int line, const T &message) { | |||||||
| #  define DCHECK_LT(val1, val2) CHECK_OP(val1, val2, <) | #  define DCHECK_LT(val1, val2) CHECK_OP(val1, val2, <) | ||||||
| #  define DCHECK_GE(val1, val2) CHECK_OP(val1, val2, >=) | #  define DCHECK_GE(val1, val2) CHECK_OP(val1, val2, >=) | ||||||
| #  define DCHECK_GT(val1, val2) CHECK_OP(val1, val2, >) | #  define DCHECK_GT(val1, val2) CHECK_OP(val1, val2, >) | ||||||
| // qiao.helloworld@gmail.com /tzu.ta.lin@gmail.com add
 |  | ||||||
| #  define DCHECK_NEAR(val1, val2, margin) CHECK_NEAR(val1, val2, margin) |  | ||||||
| #else | #else | ||||||
| // These versions generate no code in optimized mode.
 | // These versions generate no code in optimized mode.
 | ||||||
| #  define DCHECK_EQ(val1, val2) if (false) CHECK_OP(val1, val2, ==) | #  define DCHECK_EQ(val1, val2) if (false) CHECK_OP(val1, val2, ==) | ||||||
| @ -454,8 +428,6 @@ void LogMessageFatal(const char *file, int line, const T &message) { | |||||||
| #  define DCHECK_LT(val1, val2) if (false) CHECK_OP(val1, val2, <) | #  define DCHECK_LT(val1, val2) if (false) CHECK_OP(val1, val2, <) | ||||||
| #  define DCHECK_GE(val1, val2) if (false) CHECK_OP(val1, val2, >=) | #  define DCHECK_GE(val1, val2) if (false) CHECK_OP(val1, val2, >=) | ||||||
| #  define DCHECK_GT(val1, val2) if (false) CHECK_OP(val1, val2, >) | #  define DCHECK_GT(val1, val2) if (false) CHECK_OP(val1, val2, >) | ||||||
| // qiao.helloworld@gmail.com /tzu.ta.lin@gmail.com add
 |  | ||||||
| #  define DCHECK_NEAR(val1, val2, margin) if (false) CHECK_NEAR(val1, val2, margin) |  | ||||||
| #endif  // NDEBUG
 | #endif  // NDEBUG
 | ||||||
| 
 | 
 | ||||||
| // ---------------------------CHECK_NOTNULL macros ---------------------------
 | // ---------------------------CHECK_NOTNULL macros ---------------------------
 | ||||||
| @ -494,42 +466,4 @@ T& CheckNotNull(const char *file, int line, const char *names, T& t) { | |||||||
|   CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non NULL", (val)) |   CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non NULL", (val)) | ||||||
| #endif  // NDEBUG
 | #endif  // NDEBUG
 | ||||||
| 
 | 
 | ||||||
| // Modified from ceres miniglog version [begin] -------------------------------
 |  | ||||||
| //#include "ceres/internal/reenable_warnings.h"
 |  | ||||||
| // Modified from ceres miniglog version [end] ---------------------------------
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // ---------------------------TRACE macros ---------------------------
 |  | ||||||
| // qiao.helloworld@gmail.com /tzu.ta.lin@gmail.com add
 |  | ||||||
| #define __FILENAME__ \ |  | ||||||
|   (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) |  | ||||||
| 
 |  | ||||||
| #define DEXEC(fn)                                                      \ |  | ||||||
|   do {                                                                 \ |  | ||||||
|     DLOG(INFO) << "[EXEC " << #fn << " START]";                        \ |  | ||||||
|     std::chrono::steady_clock::time_point begin =                      \ |  | ||||||
|       std::chrono::steady_clock::now();                                \ |  | ||||||
|     fn;                                                                \ |  | ||||||
|     std::chrono::steady_clock::time_point end =                        \ |  | ||||||
|       std::chrono::steady_clock::now();                                \ |  | ||||||
|     DLOG(INFO) << "[EXEC " << #fn << " FINISHED in "                   \ |  | ||||||
|              << std::chrono::duration_cast<std::chrono::microseconds>  \ |  | ||||||
|                (end - begin).count() << " ms]";                        \ |  | ||||||
|   } while (0); |  | ||||||
| // DEXEC(fn)
 |  | ||||||
| //
 |  | ||||||
| // Usage:
 |  | ||||||
| // DEXEC(foo());
 |  | ||||||
| // -- output --
 |  | ||||||
| // foo.cpp: 123 [EXEC foo() START]
 |  | ||||||
| // foo.cpp: 123 [EXEC foo() FINISHED in 456 ms]
 |  | ||||||
| 
 |  | ||||||
| #define DTRACE  DLOG(INFO) << "of [" << __func__ << "]"; |  | ||||||
| // Usage:
 |  | ||||||
| // void foo() {
 |  | ||||||
| //   DTRACE
 |  | ||||||
| // }
 |  | ||||||
| // -- output --
 |  | ||||||
| // foo.cpp: 123 of [void foo(void)]
 |  | ||||||
| 
 |  | ||||||
| #endif  // MYNTEYE_MINIGLOG_H_
 | #endif  // MYNTEYE_MINIGLOG_H_
 | ||||||
|  | |||||||
| @ -21,9 +21,9 @@ | |||||||
| # define MYNTEYE_API | # define MYNTEYE_API | ||||||
| #else | #else | ||||||
| # ifdef MYNTEYE_EXPORTS | # ifdef MYNTEYE_EXPORTS | ||||||
| #  define MYNTEYE_API DECL_EXPORT | #  define MYNTEYE_API MYNTEYE_DECL_EXPORT | ||||||
| # else | # else | ||||||
| #  define MYNTEYE_API DECL_IMPORT | #  define MYNTEYE_API MYNTEYE_DECL_IMPORT | ||||||
| # endif | # endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| @ -45,7 +45,7 @@ MYNTEYE_API_VERSION_CHECK( \ | |||||||
|   ((major<<16)|(minor<<8)|(patch))  // NOLINT
 |   ((major<<16)|(minor<<8)|(patch))  // NOLINT
 | ||||||
| 
 | 
 | ||||||
| /* MYNTEYE_API_VERSION in "X.Y.Z" format */ | /* MYNTEYE_API_VERSION in "X.Y.Z" format */ | ||||||
| #define MYNTEYE_API_VERSION_STR (STRINGIFY(MYNTEYE_API_VERSION_MAJOR.MYNTEYE_API_VERSION_MINOR.MYNTEYE_API_VERSION_PATCH))  // NOLINT
 | #define MYNTEYE_API_VERSION_STR (MYNTEYE_STRINGIFY(MYNTEYE_API_VERSION_MAJOR.MYNTEYE_API_VERSION_MINOR.MYNTEYE_API_VERSION_PATCH))  // NOLINT
 | ||||||
| 
 | 
 | ||||||
| #cmakedefine MYNTEYE_NAMESPACE @MYNTEYE_NAMESPACE@ | #cmakedefine MYNTEYE_NAMESPACE @MYNTEYE_NAMESPACE@ | ||||||
| #if defined(MYNTEYE_NAMESPACE) | #if defined(MYNTEYE_NAMESPACE) | ||||||
| @ -61,4 +61,11 @@ MYNTEYE_API_VERSION_CHECK( \ | |||||||
| const char MYNTEYE_SDK_ROOT_DIR[] = "@MYNTEYE_SDK_ROOT_DIR@"; | const char MYNTEYE_SDK_ROOT_DIR[] = "@MYNTEYE_SDK_ROOT_DIR@"; | ||||||
| const char MYNTEYE_SDK_INSTALL_DIR[] = "@MYNTEYE_SDK_INSTALL_DIR@"; | const char MYNTEYE_SDK_INSTALL_DIR[] = "@MYNTEYE_SDK_INSTALL_DIR@"; | ||||||
| 
 | 
 | ||||||
|  | MYNTEYE_BEGIN_NAMESPACE | ||||||
|  | 
 | ||||||
|  | template <typename... T> | ||||||
|  | void UNUSED(T &&...) {} | ||||||
|  | 
 | ||||||
|  | MYNTEYE_END_NAMESPACE | ||||||
|  | 
 | ||||||
| #endif  // MYNTEYE_MYNTEYE_H_
 | #endif  // MYNTEYE_MYNTEYE_H_
 | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_TYPES_H_  // NOLINT
 | #ifndef MYNTEYE_TYPES_H_ | ||||||
| #define MYNTEYE_TYPES_H_ | #define MYNTEYE_TYPES_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| @ -144,7 +144,7 @@ enum class Option : std::uint8_t { | |||||||
|   /**
 |   /**
 | ||||||
|    * Image frame rate, must set IMU_FREQUENCY together |    * Image frame rate, must set IMU_FREQUENCY together | ||||||
|    * |    * | ||||||
|    *   values: {10,15,20,25,30,35,40,45,50,55}, default: 25 |    *   values: {10,15,20,25,30,35,40,45,50,55,60}, default: 25 | ||||||
|    */ |    */ | ||||||
|   FRAME_RATE, |   FRAME_RATE, | ||||||
|   /**
 |   /**
 | ||||||
| @ -483,4 +483,4 @@ std::ostream &operator<<(std::ostream &os, const OptionInfo &info); | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_TYPES_H_ NOLINT
 | #endif  // MYNTEYE_TYPES_H_
 | ||||||
|  | |||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_INTERNAL_FILES_H_  // NOLINT
 | #ifndef MYNTEYE_UTIL_FILES_H_ | ||||||
| #define MYNTEYE_INTERNAL_FILES_H_ | #define MYNTEYE_UTIL_FILES_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <string> | #include <string> | ||||||
| @ -29,4 +29,4 @@ MYNTEYE_API bool mkdir(const std::string &path); | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_INTERNAL_FILES_H_ NOLINT
 | #endif  // MYNTEYE_UTIL_FILES_H_
 | ||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_INTERNAL_STRINGS_H_  // NOLINT
 | #ifndef MYNTEYE_UTIL_STRINGS_H_ | ||||||
| #define MYNTEYE_INTERNAL_STRINGS_H_ | #define MYNTEYE_UTIL_STRINGS_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <stdexcept> | #include <stdexcept> | ||||||
| @ -59,4 +59,4 @@ std::string trim_copy(const std::string &text); | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_INTERNAL_STRINGS_H_ NOLINT
 | #endif  // MYNTEYE_UTIL_STRINGS_H_
 | ||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #ifndef MYNTEYE_INTERNAL_TIMES_H_  // NOLINT
 | #ifndef MYNTEYE_UTIL_TIMES_H_ | ||||||
| #define MYNTEYE_INTERNAL_TIMES_H_ | #define MYNTEYE_UTIL_TIMES_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <chrono> | #include <chrono> | ||||||
| @ -186,7 +186,7 @@ inline std::string to_string( | |||||||
|     const system_clock::time_point &t, const std::tm *tm, |     const system_clock::time_point &t, const std::tm *tm, | ||||||
|     const char *fmt = "%F %T", std::int32_t precision = 6) { |     const char *fmt = "%F %T", std::int32_t precision = 6) { | ||||||
|   std::stringstream ss; |   std::stringstream ss; | ||||||
| #if defined(OS_ANDROID) || defined(OS_LINUX) | #if defined(MYNTEYE_OS_ANDROID) || defined(MYNTEYE_OS_LINUX) | ||||||
|   char foo[20]; |   char foo[20]; | ||||||
|   strftime(foo, sizeof(foo), fmt, tm); |   strftime(foo, sizeof(foo), fmt, tm); | ||||||
|   ss << foo; |   ss << foo; | ||||||
| @ -220,4 +220,4 @@ inline std::string to_utc_string( | |||||||
| 
 | 
 | ||||||
| MYNTEYE_END_NAMESPACE | MYNTEYE_END_NAMESPACE | ||||||
| 
 | 
 | ||||||
| #endif  // MYNTEYE_INTERNAL_TIMES_H_ NOLINT
 | #endif  // MYNTEYE_UTIL_TIMES_H_
 | ||||||
							
								
								
									
										76
									
								
								platforms/projects/vs2017/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,76 @@ | |||||||
|  | # How to use MYNT® EYE S SDK with Visual Studio 2017 | ||||||
|  | 
 | ||||||
|  | This tutorial will create a project with Visual Studio 2017 to start using MYNT® EYE S SDK. | ||||||
|  | 
 | ||||||
|  | ## Preparation | ||||||
|  | 
 | ||||||
|  | Install the win pack of MYNT® EYE S SDK. | ||||||
|  | 
 | ||||||
|  | ## Create Project | ||||||
|  | 
 | ||||||
|  | Open Visual Studio 2017, then `File > New > Project`, | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Select "Windows Console Application", set the project's name and location, click "OK", | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Finally, you will see the new project like this, | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | ## Config Properties | ||||||
|  | 
 | ||||||
|  | Right click the project, and open its "Properties" window, | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Change "Configuration" to "All Configurations", then add the following paths to "Additional Include Directories", | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | $(MYNTEYES_SDK_ROOT)\include | ||||||
|  | $(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\include | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Add the following paths to "Additional Library Directories", | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | $(MYNTEYES_SDK_ROOT)\lib | ||||||
|  | $(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\x64\vc15\lib | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Add the following libs to "Additional Dependencies", | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | mynteye.lib | ||||||
|  | opencv_world343.lib | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | If you wanna debug, could change "Configuration" to "Debug" and add these debug libs, | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | mynteyed.lib | ||||||
|  | opencv_world343d.lib | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | ## Start using SDK | ||||||
|  | 
 | ||||||
|  | Include the headers of SDK and start using its APIs, | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Select "Release x64" or "Debug x64" to run the project. | ||||||
|  | 
 | ||||||
|  | <!-- | ||||||
|  |  | ||||||
|  | --> | ||||||
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/10_path.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/1_new_pro.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 27 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/2_new_pro.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 25 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/3_new_pro.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 30 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/4_config.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 22 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/5_config_include.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 39 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/6_config_lib_dir.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/7_config_lib.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 32 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/8_config_debug_lib.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 33 KiB | 
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/images/9_run_x64.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 60 KiB | 
							
								
								
									
										4
									
								
								platforms/projects/vs2017/mynteyes_demo/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,4 @@ | |||||||
|  | /.vs/ | ||||||
|  | /x64/ | ||||||
|  | /mynteyes_demo/x64/ | ||||||
|  | /mynteyes_demo/*.user | ||||||
							
								
								
									
										31
									
								
								platforms/projects/vs2017/mynteyes_demo/mynteyes_demo.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,31 @@ | |||||||
|  |  | ||||||
|  | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||||
|  | # Visual Studio 15 | ||||||
|  | VisualStudioVersion = 15.0.27703.2018 | ||||||
|  | MinimumVisualStudioVersion = 10.0.40219.1 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mynteyes_demo", "mynteyes_demo\mynteyes_demo.vcxproj", "{49798F84-3EA3-4CB5-A873-6163DB4B4A43}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		Debug|x64 = Debug|x64 | ||||||
|  | 		Debug|x86 = Debug|x86 | ||||||
|  | 		Release|x64 = Release|x64 | ||||||
|  | 		Release|x86 = Release|x86 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Debug|x64.ActiveCfg = Debug|x64 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Debug|x64.Build.0 = Debug|x64 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Debug|x86.ActiveCfg = Debug|Win32 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Debug|x86.Build.0 = Debug|Win32 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Release|x64.ActiveCfg = Release|x64 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Release|x64.Build.0 = Release|x64 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Release|x86.ActiveCfg = Release|Win32 | ||||||
|  | 		{49798F84-3EA3-4CB5-A873-6163DB4B4A43}.Release|x86.Build.0 = Release|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 		SolutionGuid = {F6C50224-4EC6-46EB-AA63-7E32FC6F0648} | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
| @ -0,0 +1,177 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <ItemGroup Label="ProjectConfigurations"> | ||||||
|  |     <ProjectConfiguration Include="Debug|Win32"> | ||||||
|  |       <Configuration>Debug</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Release|Win32"> | ||||||
|  |       <Configuration>Release</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Debug|x64"> | ||||||
|  |       <Configuration>Debug</Configuration> | ||||||
|  |       <Platform>x64</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Release|x64"> | ||||||
|  |       <Configuration>Release</Configuration> | ||||||
|  |       <Platform>x64</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <PropertyGroup Label="Globals"> | ||||||
|  |     <VCProjectVersion>15.0</VCProjectVersion> | ||||||
|  |     <ProjectGuid>{49798F84-3EA3-4CB5-A873-6163DB4B4A43}</ProjectGuid> | ||||||
|  |     <Keyword>Win32Proj</Keyword> | ||||||
|  |     <RootNamespace>mynteyesdemo</RootNamespace> | ||||||
|  |     <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>true</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v141</PlatformToolset> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>false</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v141</PlatformToolset> | ||||||
|  |     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>true</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v141</PlatformToolset> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>false</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v141</PlatformToolset> | ||||||
|  |     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||||
|  |   <ImportGroup Label="ExtensionSettings"> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="Shared"> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <PropertyGroup Label="UserMacros" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <LinkIncremental>true</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <LinkIncremental>true</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <LinkIncremental>false</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <LinkIncremental>false</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <PrecompiledHeader>Use</PrecompiledHeader> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <Optimization>Disabled</Optimization> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |       <AdditionalIncludeDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\include;$(MYNTEYES_SDK_ROOT)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |       <AdditionalLibraryDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\x64\vc15\lib;$(MYNTEYES_SDK_ROOT)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||||
|  |       <AdditionalDependencies>mynteyed.lib;opencv_world343d.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <PrecompiledHeader>Use</PrecompiledHeader> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <Optimization>Disabled</Optimization> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |       <AdditionalIncludeDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\include;$(MYNTEYES_SDK_ROOT)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |       <AdditionalLibraryDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\x64\vc15\lib;$(MYNTEYES_SDK_ROOT)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||||
|  |       <AdditionalDependencies>mynteyed.lib;opencv_world343d.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <PrecompiledHeader>Use</PrecompiledHeader> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <Optimization>MaxSpeed</Optimization> | ||||||
|  |       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||||
|  |       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |       <AdditionalIncludeDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\include;$(MYNTEYES_SDK_ROOT)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|  |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |       <AdditionalLibraryDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\x64\vc15\lib;$(MYNTEYES_SDK_ROOT)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||||
|  |       <AdditionalDependencies>mynteye.lib;opencv_world343.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <PrecompiledHeader>Use</PrecompiledHeader> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <Optimization>MaxSpeed</Optimization> | ||||||
|  |       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||||
|  |       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |       <AdditionalIncludeDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\include;$(MYNTEYES_SDK_ROOT)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|  |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |       <AdditionalLibraryDirectories>$(MYNTEYES_SDK_ROOT)\3rdparty\opencv\build\x64\vc15\lib;$(MYNTEYES_SDK_ROOT)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||||
|  |       <AdditionalDependencies>mynteye.lib;opencv_world343.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClInclude Include="stdafx.h" /> | ||||||
|  |     <ClInclude Include="targetver.h" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClCompile Include="mynteyes_demo.cpp" /> | ||||||
|  |     <ClCompile Include="stdafx.cpp"> | ||||||
|  |       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> | ||||||
|  |       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> | ||||||
|  |       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> | ||||||
|  |       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> | ||||||
|  |     </ClCompile> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||||
|  |   <ImportGroup Label="ExtensionTargets"> | ||||||
|  |   </ImportGroup> | ||||||
|  | </Project> | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Filter Include="Source Files"> | ||||||
|  |       <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | ||||||
|  |       <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Header Files"> | ||||||
|  |       <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | ||||||
|  |       <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions> | ||||||
|  |     </Filter> | ||||||
|  |     <Filter Include="Resource Files"> | ||||||
|  |       <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | ||||||
|  |       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | ||||||
|  |     </Filter> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClInclude Include="stdafx.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |     <ClInclude Include="targetver.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClCompile Include="stdafx.cpp"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="mynteyes_demo.cpp"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |   </ItemGroup> | ||||||
|  | </Project> | ||||||
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/mynteyes_demo/mynteyes_demo/stdafx.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								platforms/projects/vs2017/mynteyes_demo/mynteyes_demo/stdafx.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										176
									
								
								platforms/win/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,176 @@ | |||||||
|  | # MYNT® EYE S SDK | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | Language: 简体中文 | ||||||
|  | ################################################################################ | ||||||
|  | 
 | ||||||
|  | ## 如何开始使用 SDK | ||||||
|  | 
 | ||||||
|  | 1) 运行样例程序 | ||||||
|  | 
 | ||||||
|  | 安装完 SDK 的 exe 安装包后,桌面会生成 SDK 根目录的快捷方式。 | ||||||
|  | 
 | ||||||
|  | 进入 "<SDK_ROOT_DIR>\bin\samples\tutorials" 目录,双击 "get_stereo.exe" 运行,即可看到双目实时画面。 | ||||||
|  | 
 | ||||||
|  | 2)生成样例工程 | ||||||
|  | 
 | ||||||
|  | 首先,安装好 Visual Studio 2017 <https://visualstudio.microsoft.com/> 和 CMake <https://cmake.org/> 。 | ||||||
|  | 
 | ||||||
|  | 接着,进入 "<SDK_ROOT_DIR>\samples" 目录, 双击 "generate.bat" 即可生成样例工程。 | ||||||
|  | 
 | ||||||
|  | p.s. 样例教程,可见 https://slightech.github.io/MYNT-EYE-S-SDK/ 主页给出的 Guide 文档。 | ||||||
|  | 
 | ||||||
|  | p.p.s. 运行结果,参考下方英文内容。 | ||||||
|  | 
 | ||||||
|  | 3)如何于 Visual Studio 2017 下使用 SDK | ||||||
|  | 
 | ||||||
|  | 进入 "<SDK_ROOT_DIR>\projects\vs2017" ,见 "README.md" 说明。 | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | Language: English | ||||||
|  | ################################################################################ | ||||||
|  | 
 | ||||||
|  | ## How to start using SDK | ||||||
|  | 
 | ||||||
|  | 1) Run the prebuilt samples, ensure the SDK works well. | ||||||
|  | 
 | ||||||
|  | After you install the win pack of SDK, there will be a shortcut to the SDK root directory on your desktop. | ||||||
|  | 
 | ||||||
|  | First, you should plug the MYNT® EYE camera in a USB 3.0 port. | ||||||
|  | 
 | ||||||
|  | Second, goto the "<SDK_ROOT_DIR>\bin\samples\tutorials" directory and click "get_stereo.exe" to run. | ||||||
|  | 
 | ||||||
|  | Finally, you will see the window that display the realtime frame of the camera. | ||||||
|  | 
 | ||||||
|  | 2) Generate samples project of Visual Studio 2017. | ||||||
|  | 
 | ||||||
|  | First, you should install Visual Studio 2017 <https://visualstudio.microsoft.com/> and CMake <https://cmake.org/>. | ||||||
|  | 
 | ||||||
|  | Second, goto the "<SDK_ROOT_DIR>\samples" directory and click "generate.bat" to run. | ||||||
|  | 
 | ||||||
|  | Finally, you could click `_build\mynteye_samples.sln` to open the samples project. | ||||||
|  | 
 | ||||||
|  | p.s. The tutorials of samples are here: https://slightech.github.io/MYNT-EYE-S-SDK-Guide/src/data/contents.html. | ||||||
|  | 
 | ||||||
|  | p.p.s. The example result of "generate.bat", | ||||||
|  | 
 | ||||||
|  | ```cmd | ||||||
|  | -- The C compiler identification is MSVC 19.14.26429.4 | ||||||
|  | -- The CXX compiler identification is MSVC 19.14.26429.4 | ||||||
|  | -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe | ||||||
|  | -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works | ||||||
|  | -- Detecting C compiler ABI info | ||||||
|  | -- Detecting C compiler ABI info - done | ||||||
|  | -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe | ||||||
|  | -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works | ||||||
|  | -- Detecting CXX compiler ABI info | ||||||
|  | -- Detecting CXX compiler ABI info - done | ||||||
|  | -- Detecting CXX compile features | ||||||
|  | -- Detecting CXX compile features - done | ||||||
|  | -- HOST_ARCH: x86_64 | ||||||
|  | -- OpenCV ARCH: x64 | ||||||
|  | -- OpenCV RUNTIME: vc15 | ||||||
|  | -- OpenCV STATIC: OFF | ||||||
|  | -- Found OpenCV: C:/Users/John/AppData/Roaming/Slightech/MYNTEYES/SDK/2.2.1/3rdparty/opencv/build (found version "3.4.3") | ||||||
|  | -- Found OpenCV 3.4.3 in C:/Users/John/AppData/Roaming/Slightech/MYNTEYES/SDK/2.2.1/3rdparty/opencv/build/x64/vc15/lib | ||||||
|  | -- You might need to add C:\Users\John\AppData\Roaming\Slightech\MYNTEYES\SDK\2.2.1\3rdparty\opencv\build\x64\vc15\bin to your PATH to be able to run your applications. | ||||||
|  | -- Found OpenCV: 3.4.3 | ||||||
|  | CMake Warning at C:/Program Files/CMake/share/cmake-3.10/Modules/FindBoost.cmake:567 (message): | ||||||
|  |   Imported targets and dependency information not available for Boost version | ||||||
|  |   (all versions older than 1.33) | ||||||
|  | Call Stack (most recent call first): | ||||||
|  |   C:/Program Files/CMake/share/cmake-3.10/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES) | ||||||
|  |   C:/Program Files/CMake/share/cmake-3.10/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES) | ||||||
|  |   C:/Users/John/AppData/Roaming/Slightech/MYNTEYES/SDK/2.2.1/cmake/Option.cmake:47 (find_package) | ||||||
|  |   CMakeLists.txt:26 (include) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | -- Could NOT find Boost | ||||||
|  | -- | ||||||
|  | -- Platform: | ||||||
|  | --   HOST_OS: Win | ||||||
|  | --   HOST_NAME: Win | ||||||
|  | --   HOST_ARCH: x86_64 | ||||||
|  | --   HOST_COMPILER: MSVC | ||||||
|  | --     COMPILER_VERSION: 19.14.26429.4 | ||||||
|  | --     COMPILER_VERSION_MAJOR: 19 | ||||||
|  | --     COMPILER_VERSION_MINOR: 14 | ||||||
|  | --     COMPILER_VERSION_PATCH: 26429 | ||||||
|  | --     COMPILER_VERSION_TWEAK: 4 | ||||||
|  | --   CUDA_VERSION: 9.2 | ||||||
|  | --     CUDA_VERSION_MAJOR: 9 | ||||||
|  | --     CUDA_VERSION_MINOR: 2 | ||||||
|  | --     CUDA_VERSION_STRING: 9.2 | ||||||
|  | --   OpenCV_VERSION: 3.4.3 | ||||||
|  | --     OpenCV_VERSION_MAJOR: 3 | ||||||
|  | --     OpenCV_VERSION_MINOR: 4 | ||||||
|  | --     OpenCV_VERSION_PATCH: 3 | ||||||
|  | --     OpenCV_VERSION_TWEAK: 0 | ||||||
|  | --     OpenCV_VERSION_STATUS: | ||||||
|  | --     OpenCV_WITH_WORLD: TRUE | ||||||
|  | -- | ||||||
|  | -- Options: | ||||||
|  | --   WITH_API: ON | ||||||
|  | --     OpenCV: YES | ||||||
|  | --     OpenCV_VERSION: 3.4.3 | ||||||
|  | --     OpenCV_WORLD: YES | ||||||
|  | --   WITH_DEVICE_INFO_REQUIRED: ON | ||||||
|  | --   WITH_BOOST: ON | ||||||
|  | --     Boost: NO | ||||||
|  | --   WITH_GLOG: OFF | ||||||
|  | -- | ||||||
|  | -- Features: | ||||||
|  | --   Filesystem: native | ||||||
|  | -- | ||||||
|  | -- Visual Studio >= 2010, MSVC >= 10.0 | ||||||
|  | -- C_FLAGS: /DWIN32 /D_WINDOWS /W3 -Wall -march=native | ||||||
|  | -- CXX_FLAGS: /DWIN32 /D_WINDOWS /W3 /GR /EHsc -Wall -march=native | ||||||
|  | -- Found mynteye: 2.2.1 | ||||||
|  | -- Generating camera_a.bat | ||||||
|  | -- Generating get_depth_with_region.bat | ||||||
|  | -- Generating camera_d.bat | ||||||
|  | -- Generating camera_u.bat | ||||||
|  | CMake Warning at tutorials/CMakeLists.txt:70 (find_package): | ||||||
|  |   By not providing "FindPCL.cmake" in CMAKE_MODULE_PATH this project has | ||||||
|  |   asked CMake to find a package configuration file provided by "PCL", but | ||||||
|  |   CMake did not find one. | ||||||
|  | 
 | ||||||
|  |   Could not find a package configuration file provided by "PCL" with any of | ||||||
|  |   the following names: | ||||||
|  | 
 | ||||||
|  |     PCLConfig.cmake | ||||||
|  |     pcl-config.cmake | ||||||
|  | 
 | ||||||
|  |   Add the installation prefix of "PCL" to CMAKE_PREFIX_PATH or set "PCL_DIR" | ||||||
|  |   to a directory containing one of the above files.  If "PCL" provides a | ||||||
|  |   separate development package or SDK, be sure it has been installed. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | CMake Warning at tutorials/CMakeLists.txt:86 (message): | ||||||
|  |   PCL not found :( | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | -- Generating get_device_info.bat | ||||||
|  | -- Generating get_img_params.bat | ||||||
|  | -- Generating get_imu_params.bat | ||||||
|  | -- Generating get_stereo.bat | ||||||
|  | -- Generating get_stereo_rectified.bat | ||||||
|  | -- Generating get_disparity.bat | ||||||
|  | -- Generating get_depth.bat | ||||||
|  | -- Generating get_imu.bat | ||||||
|  | -- Generating get_from_callbacks.bat | ||||||
|  | -- Generating get_with_plugin.bat | ||||||
|  | -- Generating ctrl_framerate.bat | ||||||
|  | -- Generating ctrl_auto_exposure.bat | ||||||
|  | -- Generating ctrl_manual_exposure.bat | ||||||
|  | -- Generating ctrl_infrared.bat | ||||||
|  | -- Generating get_all_device_info.bat | ||||||
|  | -- Configuring done | ||||||
|  | -- Generating done | ||||||
|  | -- Build files have been written to: C:/Users/John/AppData/Roaming/Slightech/MYNTEYES/SDK/2.2.1/samples/_build | ||||||
|  | Press any key to continue . . . | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 3) Start using MYNT® EYE S SDK with Visual Studio 2017 | ||||||
|  | 
 | ||||||
|  | Goto the "<SDK_ROOT_DIR>\projects\vs2017", see the "README.md". | ||||||
| @ -14,9 +14,8 @@ | |||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| 
 | #include "mynteye/api/api.h" | ||||||
| #include "mynteye/api.h" | #include "mynteye/util/times.h" | ||||||
| #include "mynteye/times.h" |  | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| #include <opencv2/imgproc/imgproc.hpp> | #include <opencv2/imgproc/imgproc.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| namespace { | namespace { | ||||||
| 
 | 
 | ||||||
| @ -29,7 +29,7 @@ class DepthRegion { | |||||||
|    * 鼠标事件:默认不选中区域,随鼠标移动而显示。单击后,则会选中区域来显示。你可以再单击已选中区域或双击未选中区域,取消选中。 |    * 鼠标事件:默认不选中区域,随鼠标移动而显示。单击后,则会选中区域来显示。你可以再单击已选中区域或双击未选中区域,取消选中。 | ||||||
|    */ |    */ | ||||||
|   void OnMouse(const int &event, const int &x, const int &y, const int &flags) { |   void OnMouse(const int &event, const int &x, const int &y, const int &flags) { | ||||||
|     UNUSED(flags) |     MYNTEYE_UNUSED(flags) | ||||||
|     if (event != CV_EVENT_MOUSEMOVE && event != CV_EVENT_LBUTTONDOWN) { |     if (event != CV_EVENT_MOUSEMOVE && event != CV_EVENT_LBUTTONDOWN) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @ -161,7 +161,7 @@ int main(int argc, char *argv[]) { | |||||||
|   DepthRegion depth_region(3); |   DepthRegion depth_region(3); | ||||||
|   auto depth_info = []( |   auto depth_info = []( | ||||||
|       const cv::Mat &depth, const cv::Point &point, const std::uint32_t &n) { |       const cv::Mat &depth, const cv::Point &point, const std::uint32_t &n) { | ||||||
|     UNUSED(depth) |     MYNTEYE_UNUSED(depth) | ||||||
|     std::ostringstream os; |     std::ostringstream os; | ||||||
|     os << "depth pos: [" << point.y << ", " << point.x << "]" |     os << "depth pos: [" << point.y << ", " << point.x << "]" | ||||||
|        << "±" << n << ", unit: mm"; |        << "±" << n << ", unit: mm"; | ||||||
| @ -184,7 +184,7 @@ int main(int argc, char *argv[]) { | |||||||
|       // Show disparity instead of depth, but show depth values in region.
 |       // Show disparity instead of depth, but show depth values in region.
 | ||||||
|       auto &&depth_frame = disp_data.frame; |       auto &&depth_frame = disp_data.frame; | ||||||
| 
 | 
 | ||||||
| #ifdef USE_OPENCV3 | #ifdef WITH_OPENCV3 | ||||||
|       // ColormapTypes
 |       // ColormapTypes
 | ||||||
|       //   http://docs.opencv.org/master/d3/d50/group__imgproc__colormap.html#ga9a805d8262bcbe273f16be9ea2055a65
 |       //   http://docs.opencv.org/master/d3/d50/group__imgproc__colormap.html#ga9a805d8262bcbe273f16be9ea2055a65
 | ||||||
|       cv::applyColorMap(depth_frame, depth_frame, cv::COLORMAP_JET); |       cv::applyColorMap(depth_frame, depth_frame, cv::COLORMAP_JET); | ||||||
|  | |||||||
| @ -15,11 +15,9 @@ | |||||||
| #include <opencv2/imgproc/imgproc.hpp> | #include <opencv2/imgproc/imgproc.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| 
 | #include "mynteye/device/device.h" | ||||||
| #include "mynteye/device.h" | #include "mynteye/device/utils.h" | ||||||
| #include "mynteye/utils.h" | #include "mynteye/util/times.h" | ||||||
| 
 |  | ||||||
| #include "mynteye/times.h" |  | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,13 +11,13 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> |  | ||||||
| 
 |  | ||||||
| #include <atomic> | #include <atomic> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include <opencv2/highgui/highgui.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| #include "mynteye/times.h" | #include "mynteye/api/api.h" | ||||||
|  | #include "mynteye/util/times.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
| @ -29,7 +29,7 @@ int main(int argc, char *argv[]) { | |||||||
|   // Attention: must set FRAME_RATE and IMU_FREQUENCY together, otherwise won't
 |   // Attention: must set FRAME_RATE and IMU_FREQUENCY together, otherwise won't
 | ||||||
|   // succeed.
 |   // succeed.
 | ||||||
| 
 | 
 | ||||||
|   // FRAME_RATE values: 10, 15, 20, 25, 30, 35, 40, 45, 50, 55
 |   // FRAME_RATE values: 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60
 | ||||||
|   api->SetOptionValue(Option::FRAME_RATE, 25); |   api->SetOptionValue(Option::FRAME_RATE, 25); | ||||||
|   // IMU_FREQUENCY values: 100, 200, 250, 333, 500
 |   // IMU_FREQUENCY values: 100, 200, 250, 333, 500
 | ||||||
|   api->SetOptionValue(Option::IMU_FREQUENCY, 500); |   api->SetOptionValue(Option::IMU_FREQUENCY, 500); | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,15 +11,15 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> |  | ||||||
| 
 |  | ||||||
| #include <atomic> | #include <atomic> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <mutex> | #include <mutex> | ||||||
| #include <sstream> | #include <sstream> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include <opencv2/highgui/highgui.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| 
 | 
 | ||||||
| @ -52,7 +52,7 @@ int main(int argc, char *argv[]) { | |||||||
|   api->SetStreamCallback( |   api->SetStreamCallback( | ||||||
|       Stream::DEPTH, |       Stream::DEPTH, | ||||||
|       [&depth_count, &depth, &depth_mtx](const api::StreamData &data) { |       [&depth_count, &depth, &depth_mtx](const api::StreamData &data) { | ||||||
|         UNUSED(data) |         MYNTEYE_UNUSED(data) | ||||||
|         ++depth_count; |         ++depth_count; | ||||||
|         { |         { | ||||||
|           std::lock_guard<std::mutex> _(depth_mtx); |           std::lock_guard<std::mutex> _(depth_mtx); | ||||||
|  | |||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,8 +11,8 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "mynteye/api.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/pc_viewer.h" | #include "util/pc_viewer.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,9 +11,9 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "mynteye/context.h" |  | ||||||
| #include "mynteye/device.h" |  | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
|  | #include "mynteye/device/context.h" | ||||||
|  | #include "mynteye/device/device.h" | ||||||
| 
 | 
 | ||||||
| MYNTEYE_USE_NAMESPACE | MYNTEYE_USE_NAMESPACE | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,7 +14,8 @@ | |||||||
| #include <opencv2/highgui/highgui.hpp> | #include <opencv2/highgui/highgui.hpp> | ||||||
| #include <opencv2/imgproc/imgproc.hpp> | #include <opencv2/imgproc/imgproc.hpp> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/api.h" | // #include "mynteye/logger.h"
 | ||||||
|  | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| #include "util/pc_viewer.h" | #include "util/pc_viewer.h" | ||||||
| @ -32,7 +33,7 @@ class DepthRegion { | |||||||
|    * 鼠标事件:默认不选中区域,随鼠标移动而显示。单击后,则会选中区域来显示。你可以再单击已选中区域或双击未选中区域,取消选中。 |    * 鼠标事件:默认不选中区域,随鼠标移动而显示。单击后,则会选中区域来显示。你可以再单击已选中区域或双击未选中区域,取消选中。 | ||||||
|    */ |    */ | ||||||
|   void OnMouse(const int &event, const int &x, const int &y, const int &flags) { |   void OnMouse(const int &event, const int &x, const int &y, const int &flags) { | ||||||
|     UNUSED(flags) |     MYNTEYE_UNUSED(flags) | ||||||
|     if (event != CV_EVENT_MOUSEMOVE && event != CV_EVENT_LBUTTONDOWN) { |     if (event != CV_EVENT_MOUSEMOVE && event != CV_EVENT_LBUTTONDOWN) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @ -164,7 +165,7 @@ int main(int argc, char *argv[]) { | |||||||
|   DepthRegion depth_region(3); |   DepthRegion depth_region(3); | ||||||
|   auto depth_info = []( |   auto depth_info = []( | ||||||
|       const cv::Mat &depth, const cv::Point &point, const std::uint32_t &n) { |       const cv::Mat &depth, const cv::Point &point, const std::uint32_t &n) { | ||||||
|     UNUSED(depth) |     MYNTEYE_UNUSED(depth) | ||||||
|     std::ostringstream os; |     std::ostringstream os; | ||||||
|     os << "depth pos: [" << point.y << ", " << point.x << "]" |     os << "depth pos: [" << point.y << ", " << point.x << "]" | ||||||
|        << "±" << n << ", unit: mm"; |        << "±" << n << ", unit: mm"; | ||||||
| @ -186,6 +187,8 @@ int main(int argc, char *argv[]) { | |||||||
|     painter.DrawImgData(img, *left_data.img); |     painter.DrawImgData(img, *left_data.img); | ||||||
| 
 | 
 | ||||||
|     cv::imshow("frame", img); |     cv::imshow("frame", img); | ||||||
|  |     // LOG(INFO) << "left id: " << left_data.frame_id
 | ||||||
|  |     //     << ", right id: " << right_data.frame_id;
 | ||||||
| 
 | 
 | ||||||
|     auto &&disp_data = api->GetStreamData(Stream::DISPARITY_NORMALIZED); |     auto &&disp_data = api->GetStreamData(Stream::DISPARITY_NORMALIZED); | ||||||
|     auto &&depth_data = api->GetStreamData(Stream::DEPTH); |     auto &&depth_data = api->GetStreamData(Stream::DEPTH); | ||||||
| @ -193,7 +196,7 @@ int main(int argc, char *argv[]) { | |||||||
|       // Show disparity instead of depth, but show depth values in region.
 |       // Show disparity instead of depth, but show depth values in region.
 | ||||||
|       auto &&depth_frame = disp_data.frame; |       auto &&depth_frame = disp_data.frame; | ||||||
| 
 | 
 | ||||||
| #ifdef USE_OPENCV3 | #ifdef WITH_OPENCV3 | ||||||
|       // ColormapTypes
 |       // ColormapTypes
 | ||||||
|       //   http://docs.opencv.org/master/d3/d50/group__imgproc__colormap.html#ga9a805d8262bcbe273f16be9ea2055a65
 |       //   http://docs.opencv.org/master/d3/d50/group__imgproc__colormap.html#ga9a805d8262bcbe273f16be9ea2055a65
 | ||||||
|       cv::applyColorMap(depth_frame, depth_frame, cv::COLORMAP_JET); |       cv::applyColorMap(depth_frame, depth_frame, cv::COLORMAP_JET); | ||||||
| @ -204,6 +207,7 @@ int main(int argc, char *argv[]) { | |||||||
|       depth_region.DrawRect(depth_frame); |       depth_region.DrawRect(depth_frame); | ||||||
| 
 | 
 | ||||||
|       cv::imshow("depth", depth_frame); |       cv::imshow("depth", depth_frame); | ||||||
|  |       // LOG(INFO) << "depth id: " << disp_data.frame_id;
 | ||||||
| 
 | 
 | ||||||
|       depth_region.ShowElems<ushort>( |       depth_region.ShowElems<ushort>( | ||||||
|           depth_data.frame, |           depth_data.frame, | ||||||
| @ -223,6 +227,7 @@ int main(int argc, char *argv[]) { | |||||||
|     auto &&points_data = api->GetStreamData(Stream::POINTS); |     auto &&points_data = api->GetStreamData(Stream::POINTS); | ||||||
|     if (!points_data.frame.empty()) { |     if (!points_data.frame.empty()) { | ||||||
|       pcviewer.Update(points_data.frame); |       pcviewer.Update(points_data.frame); | ||||||
|  |       // LOG(INFO) << "points id: " << points_data.frame_id;
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     char key = static_cast<char>(cv::waitKey(1)); |     char key = static_cast<char>(cv::waitKey(1)); | ||||||
|  | |||||||
| @ -13,15 +13,15 @@ | |||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "util/cv_painter.h" | #include "util/cv_painter.h" | ||||||
| 
 | 
 | ||||||
| #include <opencv2/imgproc/imgproc.hpp> |  | ||||||
| 
 |  | ||||||
| #include <iomanip> | #include <iomanip> | ||||||
| #include <iostream> | #include <iostream> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <utility> | #include <utility> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/imgproc/imgproc.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| #include "mynteye/utils.h" | #include "mynteye/device/utils.h" | ||||||
| 
 | 
 | ||||||
| #define FONT_FACE cv::FONT_HERSHEY_PLAIN | #define FONT_FACE cv::FONT_HERSHEY_PLAIN | ||||||
| #define FONT_SCALE 1 | #define FONT_SCALE 1 | ||||||
| @ -178,7 +178,7 @@ cv::Rect CVPainter::DrawText( | |||||||
|   y += offset_y; |   y += offset_y; | ||||||
| 
 | 
 | ||||||
|   cv::Point org(x, y); |   cv::Point org(x, y); | ||||||
| #ifdef USE_OPENCV2 | #ifdef WITH_OPENCV2 | ||||||
|   cv::putText( |   cv::putText( | ||||||
|       const_cast<cv::Mat &>(img), text, org, FONT_FACE, FONT_SCALE, FONT_COLOR, |       const_cast<cv::Mat &>(img), text, org, FONT_FACE, FONT_SCALE, FONT_COLOR, | ||||||
|       THICKNESS); |       THICKNESS); | ||||||
|  | |||||||
| @ -15,10 +15,10 @@ | |||||||
| #define MYNTEYE_TUTORIALS_CV_PAINTER_H_ | #define MYNTEYE_TUTORIALS_CV_PAINTER_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <opencv2/core/core.hpp> |  | ||||||
| 
 |  | ||||||
| #include <string> | #include <string> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/core/core.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/types.h" | #include "mynteye/types.h" | ||||||
| 
 | 
 | ||||||
| class CVPainter { | class CVPainter { | ||||||
|  | |||||||
| @ -15,12 +15,12 @@ | |||||||
| #define MYNTEYE_TUTORIALS_PC_VIEWER_H_ | #define MYNTEYE_TUTORIALS_PC_VIEWER_H_ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <memory> | ||||||
|  | 
 | ||||||
| #include <opencv2/core/core.hpp> | #include <opencv2/core/core.hpp> | ||||||
| 
 | 
 | ||||||
| #include <pcl/visualization/pcl_visualizer.h> | #include <pcl/visualization/pcl_visualizer.h> | ||||||
| 
 | 
 | ||||||
| #include <memory> |  | ||||||
| 
 |  | ||||||
| class PCViewer { | class PCViewer { | ||||||
|  public: |  public: | ||||||
|   PCViewer(); |   PCViewer(); | ||||||
|  | |||||||
| @ -11,19 +11,19 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include <opencv2/highgui/highgui.hpp> |  | ||||||
| #include <opencv2/imgproc/imgproc.hpp> |  | ||||||
| 
 |  | ||||||
| #include <chrono> | #include <chrono> | ||||||
| #include <condition_variable> | #include <condition_variable> | ||||||
| #include <iomanip> | #include <iomanip> | ||||||
| #include <iostream> | #include <iostream> | ||||||
| #include <mutex> | #include <mutex> | ||||||
| 
 | 
 | ||||||
|  | #include <opencv2/highgui/highgui.hpp> | ||||||
|  | #include <opencv2/imgproc/imgproc.hpp> | ||||||
|  | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| #include "mynteye/mynteye.h" | #include "mynteye/mynteye.h" | ||||||
| #include "mynteye/types.h" | #include "mynteye/types.h" | ||||||
| #include "uvc/uvc.h" | #include "mynteye/uvc/uvc.h" | ||||||
| 
 | 
 | ||||||
| struct frame { | struct frame { | ||||||
|   const void *data = nullptr; |   const void *data = nullptr; | ||||||
| @ -157,7 +157,7 @@ int main(int argc, char *argv[]) { | |||||||
|     t = static_cast<double>(cv::getTickCount() - t); |     t = static_cast<double>(cv::getTickCount() - t); | ||||||
|     fps = cv::getTickFrequency() / t; |     fps = cv::getTickFrequency() / t; | ||||||
|   } |   } | ||||||
|   UNUSED(fps) |   MYNTEYE_UNUSED(fps) | ||||||
| 
 | 
 | ||||||
|   uvc::stop_streaming(*device); |   uvc::stop_streaming(*device); | ||||||
|   // cv::destroyAllWindows();
 |   // cv::destroyAllWindows();
 | ||||||
|  | |||||||
| @ -27,11 +27,13 @@ ECHO="echo -e" | |||||||
| # task colors | # task colors | ||||||
| COLOR_STRONG="1;35"  # Magenta | COLOR_STRONG="1;35"  # Magenta | ||||||
| COLOR_INFO="1;34"    # Blue | COLOR_INFO="1;34"    # Blue | ||||||
|  | COLOR_WARN="1;33"    # Yellow | ||||||
| COLOR_DONE="1;32"    # Green | COLOR_DONE="1;32"    # Green | ||||||
| COLOR_ERROR="1;31"   # Red | COLOR_ERROR="1;31"   # Red | ||||||
| # action colors | # action colors | ||||||
| COLOR_STRONG_NORMAL="35" | COLOR_STRONG_NORMAL="35" | ||||||
| COLOR_INFO_NORMAL="34" | COLOR_INFO_NORMAL="34" | ||||||
|  | COLOR_WARN_NORMAL="33" | ||||||
| COLOR_DONE_NORMAL="32" | COLOR_DONE_NORMAL="32" | ||||||
| COLOR_ERROR_NORMAL="31" | COLOR_ERROR_NORMAL="31" | ||||||
| 
 | 
 | ||||||
| @ -59,6 +61,10 @@ _echo_i() { | |||||||
|   _echo_ "$1" "$COLOR_INFO" |   _echo_ "$1" "$COLOR_INFO" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | _echo_w() { | ||||||
|  |   _echo_ "$1" "$COLOR_WARN" | ||||||
|  | } | ||||||
|  | 
 | ||||||
| _echo_d() { | _echo_d() { | ||||||
|   _echo_ "$1" "$COLOR_DONE" |   _echo_ "$1" "$COLOR_DONE" | ||||||
| } | } | ||||||
| @ -75,6 +81,10 @@ _echo_in() { | |||||||
|   _echo_ "$1" "$COLOR_INFO_NORMAL" |   _echo_ "$1" "$COLOR_INFO_NORMAL" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | _echo_wn() { | ||||||
|  |   _echo_ "$1" "$COLOR_WARN_NORMAL" | ||||||
|  | } | ||||||
|  | 
 | ||||||
| _echo_dn() { | _echo_dn() { | ||||||
|   _echo_ "$1" "$COLOR_DONE_NORMAL" |   _echo_ "$1" "$COLOR_DONE_NORMAL" | ||||||
| } | } | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ | |||||||
| # _VERBOSE_=1 | # _VERBOSE_=1 | ||||||
| # _INIT_LINTER_=1 | # _INIT_LINTER_=1 | ||||||
| # _FORCE_INSRALL_=1 | # _FORCE_INSRALL_=1 | ||||||
|  | _INSTALL_OPTIONS_=$@ | ||||||
| 
 | 
 | ||||||
| BASE_DIR=$(cd "$(dirname "$0")" && pwd) | BASE_DIR=$(cd "$(dirname "$0")" && pwd) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ | |||||||
| _INIT_BUILD_=1 | _INIT_BUILD_=1 | ||||||
| # _INIT_LINTER_=1 | # _INIT_LINTER_=1 | ||||||
| # _FORCE_INSRALL_=1 | # _FORCE_INSRALL_=1 | ||||||
|  | # _INSTALL_OPTIONS_=-y | ||||||
| 
 | 
 | ||||||
| BASE_DIR=$(cd "$(dirname "$0")" && pwd) | BASE_DIR=$(cd "$(dirname "$0")" && pwd) | ||||||
| 
 | 
 | ||||||
| @ -42,6 +43,9 @@ fi | |||||||
| 
 | 
 | ||||||
| _install_deps() { | _install_deps() { | ||||||
|   _cmd="$1"; shift; _deps_all=($@) |   _cmd="$1"; shift; _deps_all=($@) | ||||||
|  |   if [ -n "${_INSTALL_OPTIONS_}" ]; then | ||||||
|  |     _cmd="$_cmd $_INSTALL_OPTIONS_" | ||||||
|  |   fi | ||||||
|   _echo "Install cmd: $_cmd" |   _echo "Install cmd: $_cmd" | ||||||
|   _echo "Install deps: ${_deps_all[*]}" |   _echo "Install deps: ${_deps_all[*]}" | ||||||
|   if [ -n "${_FORCE_INSRALL_}" ]; then |   if [ -n "${_FORCE_INSRALL_}" ]; then | ||||||
| @ -68,6 +72,7 @@ _echo_s "Init tools" | |||||||
| if [ "$HOST_OS" = "Linux" ]; then | if [ "$HOST_OS" = "Linux" ]; then | ||||||
|   # sudo |   # sudo | ||||||
|   SUDO="sudo" |   SUDO="sudo" | ||||||
|  |   _detect_cmd $SUDO || SUDO= | ||||||
|   # detect apt-get |   # detect apt-get | ||||||
|   _detect apt-get |   _detect apt-get | ||||||
|   # apt-get install |   # apt-get install | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								scripts/version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @ -0,0 +1,24 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # Copyright 2018 Slightech Co., Ltd. All rights reserved. | ||||||
|  | # | ||||||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | # you may not use this file except in compliance with the License. | ||||||
|  | # You may obtain a copy of the License at | ||||||
|  | # | ||||||
|  | #     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | # Unless required by applicable law or agreed to in writing, software | ||||||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | # See the License for the specific language governing permissions and | ||||||
|  | # limitations under the License. | ||||||
|  | 
 | ||||||
|  | BASE_DIR=$(cd "$(dirname "$0")" && pwd) | ||||||
|  | ROOT_DIR=$(dirname "$BASE_DIR") | ||||||
|  | CONFIG_FILE="$ROOT_DIR/CMakeLists.txt" | ||||||
|  | 
 | ||||||
|  | version=$(cat "$CONFIG_FILE" | grep -m1 "mynteye VERSION") | ||||||
|  | version=$(echo "${version%LANGUAGES*}") | ||||||
|  | version=$(echo "${version#*VERSION}" | tr -d '[:space:]') | ||||||
|  | 
 | ||||||
|  | echo "$version" | ||||||
							
								
								
									
										29
									
								
								scripts/win/cmake/mynteye-targets-release.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,29 @@ | |||||||
|  | #---------------------------------------------------------------- | ||||||
|  | # Generated CMake target import file for configuration "Release". | ||||||
|  | #---------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | # Commands may need to know the format version. | ||||||
|  | set(CMAKE_IMPORT_FILE_VERSION 1) | ||||||
|  | 
 | ||||||
|  | # Import target "mynteye" for configuration "Release" | ||||||
|  | set_property(TARGET mynteye APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | ||||||
|  | set_target_properties(mynteye PROPERTIES | ||||||
|  |   IMPORTED_IMPLIB_RELEASE "${MYNTEYES_SDK_ROOT}/lib/mynteye.lib" | ||||||
|  |   IMPORTED_LOCATION_RELEASE "${MYNTEYES_SDK_ROOT}/bin/mynteye.dll" | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  | # Import target "mynteye" for configuration "Debug" | ||||||
|  | set_property(TARGET mynteye APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) | ||||||
|  | set_target_properties(mynteye PROPERTIES | ||||||
|  |   IMPORTED_IMPLIB_DEBUG "${MYNTEYES_SDK_ROOT}/lib/mynteyed.lib" | ||||||
|  |   IMPORTED_LOCATION_DEBUG "${MYNTEYES_SDK_ROOT}/bin/mynteyed.dll" | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  | list(APPEND _IMPORT_CHECK_TARGETS mynteye ) | ||||||
|  | list(APPEND _IMPORT_CHECK_FILES_FOR_mynteye | ||||||
|  |   "${MYNTEYES_SDK_ROOT}/lib/mynteye.lib" "${MYNTEYES_SDK_ROOT}/bin/mynteye.dll" | ||||||
|  |   "${MYNTEYES_SDK_ROOT}/lib/mynteyed.lib" "${MYNTEYES_SDK_ROOT}/bin/mynteyed.dll" | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  | # Commands beyond this point should not need to know the version. | ||||||
|  | set(CMAKE_IMPORT_FILE_VERSION) | ||||||
							
								
								
									
										102
									
								
								scripts/win/cmake/mynteye-targets.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,102 @@ | |||||||
|  | # Generated by CMake | ||||||
|  | 
 | ||||||
|  | if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) | ||||||
|  |    message(FATAL_ERROR "CMake >= 2.6.0 required") | ||||||
|  | endif() | ||||||
|  | cmake_policy(PUSH) | ||||||
|  | cmake_policy(VERSION 2.6) | ||||||
|  | #---------------------------------------------------------------- | ||||||
|  | # Generated CMake target import file. | ||||||
|  | #---------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | # Commands may need to know the format version. | ||||||
|  | set(CMAKE_IMPORT_FILE_VERSION 1) | ||||||
|  | 
 | ||||||
|  | # Protect against multiple inclusion, which would fail when already imported targets are added once more. | ||||||
|  | set(_targetsDefined) | ||||||
|  | set(_targetsNotDefined) | ||||||
|  | set(_expectedTargets) | ||||||
|  | foreach(_expectedTarget mynteye) | ||||||
|  |   list(APPEND _expectedTargets ${_expectedTarget}) | ||||||
|  |   if(NOT TARGET ${_expectedTarget}) | ||||||
|  |     list(APPEND _targetsNotDefined ${_expectedTarget}) | ||||||
|  |   endif() | ||||||
|  |   if(TARGET ${_expectedTarget}) | ||||||
|  |     list(APPEND _targetsDefined ${_expectedTarget}) | ||||||
|  |   endif() | ||||||
|  | endforeach() | ||||||
|  | if("${_targetsDefined}" STREQUAL "${_expectedTargets}") | ||||||
|  |   unset(_targetsDefined) | ||||||
|  |   unset(_targetsNotDefined) | ||||||
|  |   unset(_expectedTargets) | ||||||
|  |   set(CMAKE_IMPORT_FILE_VERSION) | ||||||
|  |   cmake_policy(POP) | ||||||
|  |   return() | ||||||
|  | endif() | ||||||
|  | if(NOT "${_targetsDefined}" STREQUAL "") | ||||||
|  |   message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") | ||||||
|  | endif() | ||||||
|  | unset(_targetsDefined) | ||||||
|  | unset(_targetsNotDefined) | ||||||
|  | unset(_expectedTargets) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if(NOT MYNTEYES_SDK_ROOT) | ||||||
|  |   if(DEFINED ENV{MYNTEYES_SDK_ROOT}) | ||||||
|  |     set(MYNTEYES_SDK_ROOT $ENV{MYNTEYES_SDK_ROOT}) | ||||||
|  |   else() | ||||||
|  |     get_filename_component(MYNTEYES_SDK_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) | ||||||
|  |   endif() | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # The installation prefix configured by this project. | ||||||
|  | set(_IMPORT_PREFIX "${MYNTEYES_SDK_ROOT}") | ||||||
|  | 
 | ||||||
|  | # Create imported target mynteye | ||||||
|  | add_library(mynteye SHARED IMPORTED) | ||||||
|  | 
 | ||||||
|  | set_target_properties(mynteye PROPERTIES | ||||||
|  |   INTERFACE_COMPILE_DEFINITIONS "GLOG_NO_ABBREVIATED_SEVERITIES" | ||||||
|  |   INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" | ||||||
|  |   INTERFACE_LINK_LIBRARIES "opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_world" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | if(CMAKE_VERSION VERSION_LESS 2.8.12) | ||||||
|  |   message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # Load information for each installed configuration. | ||||||
|  | get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) | ||||||
|  | file(GLOB CONFIG_FILES "${_DIR}/mynteye-targets-*.cmake") | ||||||
|  | foreach(f ${CONFIG_FILES}) | ||||||
|  |   include(${f}) | ||||||
|  | endforeach() | ||||||
|  | 
 | ||||||
|  | # Cleanup temporary variables. | ||||||
|  | set(_IMPORT_PREFIX) | ||||||
|  | 
 | ||||||
|  | # Loop over all imported files and verify that they actually exist | ||||||
|  | foreach(target ${_IMPORT_CHECK_TARGETS} ) | ||||||
|  |   foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) | ||||||
|  |     if(NOT EXISTS "${file}" ) | ||||||
|  |       message(FATAL_ERROR "The imported target \"${target}\" references the file | ||||||
|  |    \"${file}\" | ||||||
|  | but this file does not exist.  Possible reasons include: | ||||||
|  | * The file was deleted, renamed, or moved to another location. | ||||||
|  | * An install or uninstall procedure did not complete successfully. | ||||||
|  | * The installation package was faulty and contained | ||||||
|  |    \"${CMAKE_CURRENT_LIST_FILE}\" | ||||||
|  | but not all the files it references. | ||||||
|  | ") | ||||||
|  |     endif() | ||||||
|  |   endforeach() | ||||||
|  |   unset(_IMPORT_CHECK_FILES_FOR_${target}) | ||||||
|  | endforeach() | ||||||
|  | unset(_IMPORT_CHECK_TARGETS) | ||||||
|  | 
 | ||||||
|  | # This file does not depend on other imported targets which have | ||||||
|  | # been exported from the same project but in a separate export set. | ||||||
|  | 
 | ||||||
|  | # Commands beyond this point should not need to know the version. | ||||||
|  | set(CMAKE_IMPORT_FILE_VERSION) | ||||||
|  | cmake_policy(POP) | ||||||
							
								
								
									
										20
									
								
								scripts/win/generate.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,20 @@ | |||||||
|  | @echo off | ||||||
|  | setlocal | ||||||
|  | set _MY_DIR=%~dp0 | ||||||
|  | 
 | ||||||
|  | set _VS_GEN="Visual Studio 15 2017 Win64" | ||||||
|  | REM set _VS_GEN="Visual Studio 14 2015 Win64" | ||||||
|  | 
 | ||||||
|  | cd %_MY_DIR% | ||||||
|  | 
 | ||||||
|  | mkdir _build | ||||||
|  | cd _build/ | ||||||
|  | 
 | ||||||
|  | cmake -DCMAKE_BUILD_TYPE=Release ^ | ||||||
|  | -DCMAKE_PREFIX_PATH="%_MY_DIR%/../lib/cmake" ^ | ||||||
|  | -DOpenCV_DIR="%_MY_DIR%/../3rdparty/opencv/build" ^ | ||||||
|  | -G %_VS_GEN% ^ | ||||||
|  | .. | ||||||
|  | 
 | ||||||
|  | cd %_MY_DIR% | ||||||
|  | pause | ||||||
							
								
								
									
										350
									
								
								scripts/win/nsis/Include/EnvVarUpdate.nsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,350 @@ | |||||||
|  | /** | ||||||
|  |  *  EnvVarUpdate.nsh | ||||||
|  |  *    : Environmental Variables: append, prepend, and remove entries | ||||||
|  |  * | ||||||
|  |  *     WARNING: If you use StrFunc.nsh header then include it before this file | ||||||
|  |  *              with all required definitions. This is to avoid conflicts | ||||||
|  |  * | ||||||
|  |  *  Usage: | ||||||
|  |  *    ${EnvVarUpdate} "ResultVar" "EnvVarName" "Action" "RegLoc" "PathString" | ||||||
|  |  * | ||||||
|  |  *  Credits: | ||||||
|  |  *  Version 1.0 | ||||||
|  |  *  * Cal Turney (turnec2) | ||||||
|  |  *  * Amir Szekely (KiCHiK) and e-circ for developing the forerunners of this | ||||||
|  |  *    function: AddToPath, un.RemoveFromPath, AddToEnvVar, un.RemoveFromEnvVar, | ||||||
|  |  *    WriteEnvStr, and un.DeleteEnvStr | ||||||
|  |  *  * Diego Pedroso (deguix) for StrTok | ||||||
|  |  *  * Kevin English (kenglish_hi) for StrContains | ||||||
|  |  *  * Hendri Adriaens (Smile2Me), Diego Pedroso (deguix), and Dan Fuhry | ||||||
|  |  *    (dandaman32) for StrReplace | ||||||
|  |  * | ||||||
|  |  *  Version 1.1 (compatibility with StrFunc.nsh) | ||||||
|  |  *  * techtonik | ||||||
|  |  * | ||||||
|  |  *  http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | !ifndef ENVVARUPDATE_FUNCTION | ||||||
|  | !define ENVVARUPDATE_FUNCTION | ||||||
|  | !verbose push | ||||||
|  | !verbose 3 | ||||||
|  | !include "LogicLib.nsh" | ||||||
|  | !include "WinMessages.NSH" | ||||||
|  | !include "StrFunc.nsh" | ||||||
|  | 
 | ||||||
|  | ; ---- Fix for conflict if StrFunc.nsh is already includes in main file ----------------------- | ||||||
|  | !macro _IncludeStrFunction StrFuncName | ||||||
|  |   !ifndef ${StrFuncName}_INCLUDED | ||||||
|  |     ${${StrFuncName}} | ||||||
|  |   !endif | ||||||
|  |   !ifndef Un${StrFuncName}_INCLUDED | ||||||
|  |     ${Un${StrFuncName}} | ||||||
|  |   !endif | ||||||
|  |   !define un.${StrFuncName} "${Un${StrFuncName}}" | ||||||
|  | !macroend | ||||||
|  | 
 | ||||||
|  | !insertmacro _IncludeStrFunction StrTok | ||||||
|  | !insertmacro _IncludeStrFunction StrStr | ||||||
|  | !insertmacro _IncludeStrFunction StrRep | ||||||
|  | 
 | ||||||
|  | ; ---------------------------------- Macro Definitions ---------------------------------------- | ||||||
|  | !macro _EnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString | ||||||
|  |   Push "${EnvVarName}" | ||||||
|  |   Push "${Action}" | ||||||
|  |   Push "${RegLoc}" | ||||||
|  |   Push "${PathString}" | ||||||
|  |     Call EnvVarUpdate | ||||||
|  |   Pop "${ResultVar}" | ||||||
|  | !macroend | ||||||
|  | !define EnvVarUpdate '!insertmacro "_EnvVarUpdateConstructor"' | ||||||
|  | 
 | ||||||
|  | !macro _unEnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString | ||||||
|  |   Push "${EnvVarName}" | ||||||
|  |   Push "${Action}" | ||||||
|  |   Push "${RegLoc}" | ||||||
|  |   Push "${PathString}" | ||||||
|  |     Call un.EnvVarUpdate | ||||||
|  |   Pop "${ResultVar}" | ||||||
|  | !macroend | ||||||
|  | !define un.EnvVarUpdate '!insertmacro "_unEnvVarUpdateConstructor"' | ||||||
|  | ; ---------------------------------- Macro Definitions end------------------------------------- | ||||||
|  | 
 | ||||||
|  | ;----------------------------------- EnvVarUpdate start---------------------------------------- | ||||||
|  | !define hklm_all_users     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' | ||||||
|  | !define hkcu_current_user  'HKCU "Environment"' | ||||||
|  | 
 | ||||||
|  | !macro EnvVarUpdate UN | ||||||
|  | 
 | ||||||
|  | Function ${UN}EnvVarUpdate | ||||||
|  | 
 | ||||||
|  |   Push $0 | ||||||
|  |   Exch 4 | ||||||
|  |   Exch $1 | ||||||
|  |   Exch 3 | ||||||
|  |   Exch $2 | ||||||
|  |   Exch 2 | ||||||
|  |   Exch $3 | ||||||
|  |   Exch | ||||||
|  |   Exch $4 | ||||||
|  |   Push $5 | ||||||
|  |   Push $6 | ||||||
|  |   Push $7 | ||||||
|  |   Push $8 | ||||||
|  |   Push $9 | ||||||
|  |   Push $R0 | ||||||
|  | 
 | ||||||
|  |   /* After this point: | ||||||
|  |   ------------------------- | ||||||
|  |      $0 = ResultVar     (returned) | ||||||
|  |      $1 = EnvVarName    (input) | ||||||
|  |      $2 = Action        (input) | ||||||
|  |      $3 = RegLoc        (input) | ||||||
|  |      $4 = PathString    (input) | ||||||
|  |      $5 = Orig EnvVar   (read from registry) | ||||||
|  |      $6 = Len of $0     (temp) | ||||||
|  |      $7 = tempstr1      (temp) | ||||||
|  |      $8 = Entry counter (temp) | ||||||
|  |      $9 = tempstr2      (temp) | ||||||
|  |      $R0 = tempChar     (temp)  */ | ||||||
|  | 
 | ||||||
|  |   ; Step 1:  Read contents of EnvVarName from RegLoc | ||||||
|  |   ; | ||||||
|  |   ; Check for empty EnvVarName | ||||||
|  |   ${If} $1 == "" | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint "ERROR: EnvVarName is blank" | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ; Check for valid Action | ||||||
|  |   ${If}    $2 != "A" | ||||||
|  |   ${AndIf} $2 != "P" | ||||||
|  |   ${AndIf} $2 != "R" | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint "ERROR: Invalid Action - must be A, P, or R" | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ${If} $3 == HKLM | ||||||
|  |     ReadRegStr $5 ${hklm_all_users} $1     ; Get EnvVarName from all users into $5 | ||||||
|  |   ${ElseIf} $3 == HKCU | ||||||
|  |     ReadRegStr $5 ${hkcu_current_user} $1  ; Read EnvVarName from current user into $5 | ||||||
|  |   ${Else} | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint 'ERROR: Action is [$3] but must be "HKLM" or HKCU"' | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ; Check for empty PathString | ||||||
|  |   ${If} $4 == "" | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint "ERROR: PathString is blank" | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ;;khc - here check if length is going to be greater then max string length | ||||||
|  |   ;;      and abort if so - also abort if original path empty - may mean | ||||||
|  |   ;;      it was too long as well- write message to say set it by hand | ||||||
|  |   Push $6 | ||||||
|  |   Push $7 | ||||||
|  |   Push $8 | ||||||
|  |   StrLen $7 $4 | ||||||
|  |   StrLen $6 $5 | ||||||
|  |   IntOp $8 $6 + $7 | ||||||
|  |   ${If} $5 == "" | ||||||
|  |   ${OrIf} $8 >= ${NSIS_MAX_STRLEN} | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint "Current $1 length ($6) too long to modify in NSIS; set manually if needed" | ||||||
|  |     Pop $8 | ||||||
|  |     Pop $7 | ||||||
|  |     Pop $6 | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  |   Pop $8 | ||||||
|  |   Pop $7 | ||||||
|  |   Pop $6 | ||||||
|  |   ;;khc | ||||||
|  | 
 | ||||||
|  |   ; Make sure we've got some work to do | ||||||
|  |   ${If} $5 == "" | ||||||
|  |   ${AndIf} $2 == "R" | ||||||
|  |     SetErrors | ||||||
|  |     DetailPrint "$1 is empty - Nothing to remove" | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ; Step 2: Scrub EnvVar | ||||||
|  |   ; | ||||||
|  |   StrCpy $0 $5                             ; Copy the contents to $0 | ||||||
|  |   ; Remove spaces around semicolons (NOTE: spaces before the 1st entry or | ||||||
|  |   ; after the last one are not removed here but instead in Step 3) | ||||||
|  |   ${If} $0 != ""                           ; If EnvVar is not empty ... | ||||||
|  |     ${Do} | ||||||
|  |       ${${UN}StrStr} $7 $0 " ;" | ||||||
|  |       ${If} $7 == "" | ||||||
|  |         ${ExitDo} | ||||||
|  |       ${EndIf} | ||||||
|  |       ${${UN}StrRep} $0  $0 " ;" ";"         ; Remove '<space>;' | ||||||
|  |     ${Loop} | ||||||
|  |     ${Do} | ||||||
|  |       ${${UN}StrStr} $7 $0 "; " | ||||||
|  |       ${If} $7 == "" | ||||||
|  |         ${ExitDo} | ||||||
|  |       ${EndIf} | ||||||
|  |       ${${UN}StrRep} $0  $0 "; " ";"         ; Remove ';<space>' | ||||||
|  |     ${Loop} | ||||||
|  |     ${Do} | ||||||
|  |       ${${UN}StrStr} $7 $0 ";;" | ||||||
|  |       ${If} $7 == "" | ||||||
|  |         ${ExitDo} | ||||||
|  |       ${EndIf} | ||||||
|  |       ${${UN}StrRep} $0  $0 ";;" ";" | ||||||
|  |     ${Loop} | ||||||
|  | 
 | ||||||
|  |     ; Remove a leading or trailing semicolon from EnvVar | ||||||
|  |     StrCpy  $7  $0 1 0 | ||||||
|  |     ${If} $7 == ";" | ||||||
|  |       StrCpy $0  $0 "" 1                   ; Change ';<EnvVar>' to '<EnvVar>' | ||||||
|  |     ${EndIf} | ||||||
|  |     StrLen $6 $0 | ||||||
|  |     IntOp $6 $6 - 1 | ||||||
|  |     StrCpy $7  $0 1 $6 | ||||||
|  |     ${If} $7 == ";" | ||||||
|  |      StrCpy $0  $0 $6                      ; Change ';<EnvVar>' to '<EnvVar>' | ||||||
|  |     ${EndIf} | ||||||
|  |     ; DetailPrint "Scrubbed $1: [$0]"      ; Uncomment to debug | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   /* Step 3. Remove all instances of the target path/string (even if "A" or "P") | ||||||
|  |      $6 = bool flag (1 = found and removed PathString) | ||||||
|  |      $7 = a string (e.g. path) delimited by semicolon(s) | ||||||
|  |      $8 = entry counter starting at 0 | ||||||
|  |      $9 = copy of $0 | ||||||
|  |      $R0 = tempChar      */ | ||||||
|  | 
 | ||||||
|  |   ${If} $5 != ""                           ; If EnvVar is not empty ... | ||||||
|  |     StrCpy $9 $0 | ||||||
|  |     StrCpy $0 "" | ||||||
|  |     StrCpy $8 0 | ||||||
|  |     StrCpy $6 0 | ||||||
|  | 
 | ||||||
|  |     ${Do} | ||||||
|  |       ${${UN}StrTok} $7 $9 ";" $8 "0"      ; $7 = next entry, $8 = entry counter | ||||||
|  | 
 | ||||||
|  |       ${If} $7 == ""                       ; If we've run out of entries, | ||||||
|  |         ${ExitDo}                          ;    were done | ||||||
|  |       ${EndIf}                             ; | ||||||
|  | 
 | ||||||
|  |       ; Remove leading and trailing spaces from this entry (critical step for Action=Remove) | ||||||
|  |       ${Do} | ||||||
|  |         StrCpy $R0  $7 1 | ||||||
|  |         ${If} $R0 != " " | ||||||
|  |           ${ExitDo} | ||||||
|  |         ${EndIf} | ||||||
|  |         StrCpy $7   $7 "" 1                ;  Remove leading space | ||||||
|  |       ${Loop} | ||||||
|  |       ${Do} | ||||||
|  |         StrCpy $R0  $7 1 -1 | ||||||
|  |         ${If} $R0 != " " | ||||||
|  |           ${ExitDo} | ||||||
|  |         ${EndIf} | ||||||
|  |         StrCpy $7   $7 -1                  ;  Remove trailing space | ||||||
|  |       ${Loop} | ||||||
|  |       ${If} $7 == $4                       ; If string matches, remove it by not appending it | ||||||
|  |         StrCpy $6 1                        ; Set 'found' flag | ||||||
|  |       ${ElseIf} $7 != $4                   ; If string does NOT match | ||||||
|  |       ${AndIf}  $0 == ""                   ;    and the 1st string being added to $0, | ||||||
|  |         StrCpy $0 $7                       ;    copy it to $0 without a prepended semicolon | ||||||
|  |       ${ElseIf} $7 != $4                   ; If string does NOT match | ||||||
|  |       ${AndIf}  $0 != ""                   ;    and this is NOT the 1st string to be added to $0, | ||||||
|  |         StrCpy $0 $0;$7                    ;    append path to $0 with a prepended semicolon | ||||||
|  |       ${EndIf}                             ; | ||||||
|  | 
 | ||||||
|  |       IntOp $8 $8 + 1                      ; Bump counter | ||||||
|  |     ${Loop}                                ; Check for duplicates until we run out of paths | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ; Step 4:  Perform the requested Action | ||||||
|  |   ; | ||||||
|  |   ${If} $2 != "R"                          ; If Append or Prepend | ||||||
|  |     ${If} $6 == 1                          ; And if we found the target | ||||||
|  |       DetailPrint "Target is already present in $1. It will be removed and" | ||||||
|  |     ${EndIf} | ||||||
|  |     ${If} $0 == ""                         ; If EnvVar is (now) empty | ||||||
|  |       StrCpy $0 $4                         ;   just copy PathString to EnvVar | ||||||
|  |       ${If} $6 == 0                        ; If found flag is either 0 | ||||||
|  |       ${OrIf} $6 == ""                     ; or blank (if EnvVarName is empty) | ||||||
|  |         DetailPrint "$1 was empty and has been updated with the target" | ||||||
|  |       ${EndIf} | ||||||
|  |     ${ElseIf} $2 == "A"                    ;  If Append (and EnvVar is not empty), | ||||||
|  |       StrCpy $0 $0;$4                      ;     append PathString | ||||||
|  |       ${If} $6 == 1 | ||||||
|  |         DetailPrint "appended to $1" | ||||||
|  |       ${Else} | ||||||
|  |         DetailPrint "Target was appended to $1" | ||||||
|  |       ${EndIf} | ||||||
|  |     ${Else}                                ;  If Prepend (and EnvVar is not empty), | ||||||
|  |       StrCpy $0 $4;$0                      ;     prepend PathString | ||||||
|  |       ${If} $6 == 1 | ||||||
|  |         DetailPrint "prepended to $1" | ||||||
|  |       ${Else} | ||||||
|  |         DetailPrint "Target was prepended to $1" | ||||||
|  |       ${EndIf} | ||||||
|  |     ${EndIf} | ||||||
|  |   ${Else}                                  ; If Action = Remove | ||||||
|  |     ${If} $6 == 1                          ;   and we found the target | ||||||
|  |       DetailPrint "Target was found and removed from $1" | ||||||
|  |     ${Else} | ||||||
|  |       DetailPrint "Target was NOT found in $1 (nothing to remove)" | ||||||
|  |     ${EndIf} | ||||||
|  |     ${If} $0 == "" | ||||||
|  |       DetailPrint "$1 is now empty" | ||||||
|  |     ${EndIf} | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   ; Step 5:  Update the registry at RegLoc with the updated EnvVar and announce the change | ||||||
|  |   ; | ||||||
|  |   ClearErrors | ||||||
|  |   ${If} $3  == HKLM | ||||||
|  |     WriteRegExpandStr ${hklm_all_users} $1 $0     ; Write it in all users section | ||||||
|  |   ${ElseIf} $3 == HKCU | ||||||
|  |     WriteRegExpandStr ${hkcu_current_user} $1 $0  ; Write it to current user section | ||||||
|  |   ${EndIf} | ||||||
|  | 
 | ||||||
|  |   IfErrors 0 +4 | ||||||
|  |     MessageBox MB_OK|MB_ICONEXCLAMATION "Could not write updated $1 to $3" | ||||||
|  |     DetailPrint "Could not write updated $1 to $3" | ||||||
|  |     Goto EnvVarUpdate_Restore_Vars | ||||||
|  | 
 | ||||||
|  |   ; "Export" our change | ||||||
|  |   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 | ||||||
|  | 
 | ||||||
|  |   EnvVarUpdate_Restore_Vars: | ||||||
|  |   ; | ||||||
|  |   ; Restore the user's variables and return ResultVar | ||||||
|  |   Pop $R0 | ||||||
|  |   Pop $9 | ||||||
|  |   Pop $8 | ||||||
|  |   Pop $7 | ||||||
|  |   Pop $6 | ||||||
|  |   Pop $5 | ||||||
|  |   Pop $4 | ||||||
|  |   Pop $3 | ||||||
|  |   Pop $2 | ||||||
|  |   Pop $1 | ||||||
|  |   Push $0  ; Push my $0 (ResultVar) | ||||||
|  |   Exch | ||||||
|  |   Pop $0   ; Restore his $0 | ||||||
|  | 
 | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | !macroend   ; EnvVarUpdate UN | ||||||
|  | !insertmacro EnvVarUpdate "" | ||||||
|  | !insertmacro EnvVarUpdate "un." | ||||||
|  | ;----------------------------------- EnvVarUpdate end---------------------------------------- | ||||||
|  | 
 | ||||||
|  | !verbose pop | ||||||
|  | !endif | ||||||
							
								
								
									
										
											BIN
										
									
								
								scripts/win/nsis/mynt.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.2 KiB | 
							
								
								
									
										198
									
								
								scripts/win/nsis/winpack.nsi.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,198 @@ | |||||||
|  | ; winpack.nsi | ||||||
|  | 
 | ||||||
|  | !addincludedir scripts\win\nsis\Include | ||||||
|  | !include EnvVarUpdate.nsh | ||||||
|  | 
 | ||||||
|  | !addplugindir scripts\win\nsis\Plugins | ||||||
|  | 
 | ||||||
|  | !include WinMessages.nsh | ||||||
|  | 
 | ||||||
|  | !define VERSION "@mynteye_VERSION@" | ||||||
|  | !define OpenCV_VERSION "@OpenCV_VERSION@" | ||||||
|  | 
 | ||||||
|  | !define DSETDIR "$APPDATA" | ||||||
|  | ;!define DSETDIR "$PROGRAMFILES64" | ||||||
|  | 
 | ||||||
|  | ; HKLM (all users) vs HKCU (current user) defines | ||||||
|  | !define ENV_HKLM 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' | ||||||
|  | !define ENV_HKCU 'HKCU "Environment"' | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; The name of the installer | ||||||
|  | Name "MYNTEYE S SDK ${VERSION}" | ||||||
|  | 
 | ||||||
|  | ; The icon of the installer | ||||||
|  | Icon "scripts\win\nsis\mynt.ico" | ||||||
|  | 
 | ||||||
|  | ; The file to write | ||||||
|  | OutFile "mynteye-s-${VERSION}-win-x64-opencv-${OpenCV_VERSION}.exe" | ||||||
|  | 
 | ||||||
|  | ; The default installation directory | ||||||
|  | InstallDir ${DSETDIR}\Slightech\MYNTEYES\SDK\${VERSION} | ||||||
|  | 
 | ||||||
|  | ; Registry key to check for directory (so if you install again, it will | ||||||
|  | ; overwrite the old one automatically) | ||||||
|  | InstallDirRegKey HKLM "Software\MYNTEYESSDK" "Install_Dir" | ||||||
|  | 
 | ||||||
|  | ; Request application privileges for Windows Vista | ||||||
|  | ;RequestExecutionLevel user | ||||||
|  | RequestExecutionLevel admin | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; Pages | ||||||
|  | 
 | ||||||
|  | Page components | ||||||
|  | Page directory | ||||||
|  | Page instfiles | ||||||
|  | 
 | ||||||
|  | UninstPage uninstConfirm | ||||||
|  | UninstPage instfiles | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; The stuff to install | ||||||
|  | Section "SDK (required)" | ||||||
|  | 
 | ||||||
|  |   SectionIn RO | ||||||
|  | 
 | ||||||
|  |   ; Set output path to the installation directory. | ||||||
|  |   SetOutPath $INSTDIR | ||||||
|  | 
 | ||||||
|  |   ; Put file there | ||||||
|  |   File /r "mynteye-s-${VERSION}-win-x64-opencv-${OpenCV_VERSION}\*" | ||||||
|  | 
 | ||||||
|  |   ; Write the installation path into the registry | ||||||
|  |   WriteRegStr HKLM "SOFTWARE\MYNTEYESSDK" "Install_Dir" "$INSTDIR" | ||||||
|  | 
 | ||||||
|  |   ; Write the uninstall keys for Windows | ||||||
|  |   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "DisplayName" "MYNTEYE S SDK" | ||||||
|  |   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "UninstallString" '"$INSTDIR\uninstall.exe"' | ||||||
|  |   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "NoModify" 1 | ||||||
|  |   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "NoRepair" 1 | ||||||
|  |   WriteUninstaller "uninstall.exe" | ||||||
|  | 
 | ||||||
|  |   ; Set variables for local machine | ||||||
|  |   WriteRegExpandStr ${ENV_HKLM} MYNTEYES_SDK_ROOT "$INSTDIR" | ||||||
|  | 
 | ||||||
|  |   ;${EnvVarUpdate} $0 "PATH" "P" "HKLM" "%MYNTEYES_SDK_PATH%" | ||||||
|  |   ${EnvVarUpdate} $0 "PATH" "P" "HKLM" "$INSTDIR\bin;$INSTDIR\3rdparty\opencv\build\x64\vc15\bin" | ||||||
|  | 
 | ||||||
|  |   ; Push "%MYNTEYES_SDK_PATH%" | ||||||
|  |   ; Call AddToPath | ||||||
|  | 
 | ||||||
|  |   ; Make sure windows knows about the change | ||||||
|  |   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 | ||||||
|  | 
 | ||||||
|  | SectionEnd | ||||||
|  | 
 | ||||||
|  | ; Optional section (can be disabled by the user) | ||||||
|  | Section "Desktop Shortcuts" | ||||||
|  | 
 | ||||||
|  |   CreateShortcut "$DESKTOP\MYNTEYE S SDK ${VERSION}.lnk" "$INSTDIR" "" "$INSTDIR" 0 | ||||||
|  | 
 | ||||||
|  | SectionEnd | ||||||
|  | 
 | ||||||
|  | Function .onInstSuccess | ||||||
|  | 
 | ||||||
|  |   WriteRegStr "HKLM" "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" \ | ||||||
|  |     "View MYNTEYES README.txt" \ | ||||||
|  |     "cmd.exe /c start /max notepad.exe $INSTDIR\README.txt" | ||||||
|  | 
 | ||||||
|  |   MessageBox MB_OKCANCEL "Reboot your system now?" /SD IDOK IDCANCEL NoReboot | ||||||
|  |     Reboot | ||||||
|  |   NoReboot: | ||||||
|  | 
 | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | Function .onInstFailed | ||||||
|  |   MessageBox MB_OK "Install failed." | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; Uninstaller | ||||||
|  | 
 | ||||||
|  | Section "Uninstall" | ||||||
|  | 
 | ||||||
|  |   ; Remove registry keys | ||||||
|  |   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" | ||||||
|  |   DeleteRegKey HKLM "SOFTWARE\MYNTEYESSDK" | ||||||
|  | 
 | ||||||
|  |   ; Remove install stuff | ||||||
|  |   RMDir /r "$INSTDIR" | ||||||
|  | 
 | ||||||
|  |   ; Remove shortcuts, if any | ||||||
|  |   Delete "$DESKTOP\MYNTEYE S SDK ${VERSION}.lnk" | ||||||
|  | 
 | ||||||
|  |   ; Remove directories used | ||||||
|  |   StrCpy $0 "${DSETDIR}\Slightech\MYNTEYES" | ||||||
|  |   Call un.DeleteDirIfEmpty | ||||||
|  |   StrCpy $0 "${DSETDIR}\Slightech" | ||||||
|  |   Call un.DeleteDirIfEmpty | ||||||
|  | 
 | ||||||
|  |   RMDir /r "$APPDATA\Slightech\MYNTEYES" | ||||||
|  |   StrCpy $0 "$APPDATA\Slightech" | ||||||
|  |   Call un.DeleteDirIfEmpty | ||||||
|  | 
 | ||||||
|  |   ; Delete variables | ||||||
|  |   DeleteRegValue ${ENV_HKLM} MYNTEYES_SDK_ROOT | ||||||
|  | 
 | ||||||
|  |   ;${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "%MYNTEYES_SDK_PATH%" | ||||||
|  |   ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\bin" | ||||||
|  |   ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\3rdparty\opencv\build\x64\vc15\bin" | ||||||
|  | 
 | ||||||
|  |   ; Push "%MYNTEYES_SDK_PATH%" | ||||||
|  |   ; Call un.RemoveFromPath | ||||||
|  | 
 | ||||||
|  |   ; Make sure windows knows about the change | ||||||
|  |   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 | ||||||
|  | 
 | ||||||
|  | SectionEnd | ||||||
|  | 
 | ||||||
|  | Function un.onUninstSuccess | ||||||
|  |   MessageBox MB_OK "Uninstall success." | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | Function un.onUninstFailed | ||||||
|  |   MessageBox MB_OK "Uninstall failed." | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; DeleteDirIfEmpty - Delete dir only if empty | ||||||
|  | 
 | ||||||
|  | Function un.DeleteDirIfEmpty | ||||||
|  |   FindFirst $R0 $R1 "$0\*.*" | ||||||
|  |   strcmp $R1 "." 0 NoDelete | ||||||
|  |    FindNext $R0 $R1 | ||||||
|  |    strcmp $R1 ".." 0 NoDelete | ||||||
|  |     ClearErrors | ||||||
|  |     FindNext $R0 $R1 | ||||||
|  |     IfErrors 0 NoDelete | ||||||
|  |      FindClose $R0 | ||||||
|  |      Sleep 1000 | ||||||
|  |      RMDir "$0" | ||||||
|  |   NoDelete: | ||||||
|  |    FindClose $R0 | ||||||
|  | FunctionEnd | ||||||
|  | 
 | ||||||
|  | ;-------------------------------- | ||||||
|  | 
 | ||||||
|  | ; Path Manipulation | ||||||
|  | ;   http://nsis.sourceforge.net/Path_Manipulation | ||||||
|  | ; Environmental Variables: append, prepend, and remove entries | ||||||
|  | ;   http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries | ||||||
|  | ; Setting Environment Variables | ||||||
|  | ;   http://nsis.sourceforge.net/Setting_Environment_Variables | ||||||
|  | ; Setting Environment Variables to Active Installer Process | ||||||
|  | ;   http://nsis.sourceforge.net/Setting_Environment_Variables_to_Active_Installer_Process | ||||||
|  | 
 | ||||||
|  | ; Delete files and subdirectories | ||||||
|  | ;   http://nsis.sourceforge.net/Delete_files_and_subdirectories | ||||||
|  | ; Delete dir only if empty | ||||||
|  | ;   http://nsis.sourceforge.net/Delete_dir_only_if_empty | ||||||
|  | 
 | ||||||
|  | ;https://gist.github.com/azalea/deb3c1ed2a984eadf96be77b81dd49b1 | ||||||
|  | ;!include ProcessEnvPrependPath.nsh | ||||||
							
								
								
									
										179
									
								
								scripts/win/winpack.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,179 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # Copyright 2018 Slightech Co., Ltd. All rights reserved. | ||||||
|  | # | ||||||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | # you may not use this file except in compliance with the License. | ||||||
|  | # You may obtain a copy of the License at | ||||||
|  | # | ||||||
|  | #     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | # Unless required by applicable law or agreed to in writing, software | ||||||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | # See the License for the specific language governing permissions and | ||||||
|  | # limitations under the License. | ||||||
|  | 
 | ||||||
|  | BASE_DIR=$(cd "$(dirname "$0")" && pwd) | ||||||
|  | ROOT_DIR=$(realpath "$BASE_DIR/../..") | ||||||
|  | SCRIPTS_DIR=$(realpath "$BASE_DIR/..") | ||||||
|  | 
 | ||||||
|  | source "$SCRIPTS_DIR/common/echo.sh" | ||||||
|  | source "$SCRIPTS_DIR/common/detect.sh" | ||||||
|  | 
 | ||||||
|  | if [ ! -d "$ROOT_DIR/3rdparty/opencv" ]; then | ||||||
|  |   _echo_e "3rdparty/opencv not found, please manually download it to here." | ||||||
|  |   _echo_e | ||||||
|  |   _echo_e "  OpenCV Win pack 3.4.3: https://opencv.org/releases.html" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if ! _detect_cmd makensis; then | ||||||
|  |   _echo_e "makensis not found, please manually download and install it." | ||||||
|  |   _echo_e | ||||||
|  |   _echo_e "  NSIS: http://nsis.sourceforge.net" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | export OpenCV_DIR="$ROOT_DIR/3rdparty/opencv/build" | ||||||
|  | 
 | ||||||
|  | _rm() { | ||||||
|  |   [ -e "$1" ] && (rm -r "$1" && _echo_i "RM: $1") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | _md() { | ||||||
|  |   [ ! -d "$1" ] && (mkdir -p "$1" && _echo_i "MD: $1") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # _mv_subs <srcdir> <dstdir> [sub1 sub2 ...] | ||||||
|  | _mv_subs() { | ||||||
|  |   _src_dir="$1"; shift; _dst_dir="$1"; shift; _subs="$@"; | ||||||
|  |   if [ -z "$_subs" ]; then | ||||||
|  |     _subs=`ls $_src_dir` | ||||||
|  |   fi | ||||||
|  |   for _sub in $_subs; do | ||||||
|  |     _src="$_src_dir/$_sub" | ||||||
|  |     [ ! -e "$_src" ] && (_echo_i "Not exist: $_src") && continue | ||||||
|  |     _dst= | ||||||
|  |     [ -f "$_src" ] && _dst="$_dst_dir" | ||||||
|  |     [ -d "$_src" ] && _dst="$_dst_dir/$_sub" | ||||||
|  |     [ -z "$_dst" ] && continue | ||||||
|  |     # _echo "_src: $_src" | ||||||
|  |     # _echo "_dst: $_dst" | ||||||
|  |     mv "$_src" "$_dst" | ||||||
|  |   done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # build release | ||||||
|  | 
 | ||||||
|  | make samples tools | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # build debug | ||||||
|  | 
 | ||||||
|  | rm -r "$ROOT_DIR/_build" | ||||||
|  | rm -r "$ROOT_DIR/_output" | ||||||
|  | make build BUILD_TYPE=Debug | ||||||
|  | 
 | ||||||
|  | mv "$ROOT_DIR/_output/bin/mynteyed.dll" "$ROOT_DIR/_install/bin/mynteyed.dll" | ||||||
|  | mv "$ROOT_DIR/_output/lib/mynteyed.lib" "$ROOT_DIR/_install/lib/mynteyed.lib" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # move to _install | ||||||
|  | 
 | ||||||
|  | # 3rdparty/opencv | ||||||
|  | _md "$ROOT_DIR/_install/3rdparty" | ||||||
|  | mv "$ROOT_DIR/3rdparty/opencv" "$ROOT_DIR/_install/3rdparty/opencv" | ||||||
|  | 
 | ||||||
|  | # cmake | ||||||
|  | mv "$ROOT_DIR/cmake" "$ROOT_DIR/_install/cmake" | ||||||
|  | 
 | ||||||
|  | # samples | ||||||
|  | mv "$ROOT_DIR/samples/_output/bin" "$ROOT_DIR/_install/bin/samples" | ||||||
|  | mv "$ROOT_DIR/samples/_output/lib" "$ROOT_DIR/_install/lib/samples" | ||||||
|  | _rm "$ROOT_DIR/samples/_build" | ||||||
|  | _rm "$ROOT_DIR/samples/_output" | ||||||
|  | mv "$ROOT_DIR/samples" "$ROOT_DIR/_install/samples" | ||||||
|  | 
 | ||||||
|  | # tools | ||||||
|  | mv "$ROOT_DIR/tools/_output/bin" "$ROOT_DIR/_install/bin/tools" | ||||||
|  | mv "$ROOT_DIR/tools/_output/lib" "$ROOT_DIR/_install/lib/tools" | ||||||
|  | _rm "$ROOT_DIR/tools/_build" | ||||||
|  | _rm "$ROOT_DIR/tools/_output" | ||||||
|  | mv "$ROOT_DIR/tools/linter" "$ROOT_DIR/3rdparty/linter" | ||||||
|  | mv "$ROOT_DIR/tools" "$ROOT_DIR/_install/tools" | ||||||
|  | 
 | ||||||
|  | # platforms/win | ||||||
|  | mv "$ROOT_DIR/platforms/win/README.txt" "$ROOT_DIR/_install" | ||||||
|  | 
 | ||||||
|  | _rm "$ROOT_DIR/platforms/projects/vs2017/mynteyes_demo/.vs" | ||||||
|  | _rm "$ROOT_DIR/platforms/projects/vs2017/mynteyes_demo/x64" | ||||||
|  | _rm "$ROOT_DIR/platforms/projects/vs2017/mynteyes_demo/mynteyes_demo/x64" | ||||||
|  | _rm "$ROOT_DIR/platforms/projects/vs2017/mynteyes_demo/mynteyes_demo/mynteyes_demo.vcxproj.user" | ||||||
|  | mv "$ROOT_DIR/platforms/projects" "$ROOT_DIR/_install/projects" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # copy to _install | ||||||
|  | 
 | ||||||
|  | cp -f "$ROOT_DIR/scripts/win/cmake/mynteye-targets.cmake" "$ROOT_DIR/_install/lib/cmake/mynteye/" | ||||||
|  | cp -f "$ROOT_DIR/scripts/win/cmake/mynteye-targets-release.cmake" "$ROOT_DIR/_install/lib/cmake/mynteye/" | ||||||
|  | 
 | ||||||
|  | cp -f "$ROOT_DIR/scripts/win/generate.bat" "$ROOT_DIR/_install/samples/" | ||||||
|  | cp -f "$ROOT_DIR/scripts/win/generate.bat" "$ROOT_DIR/_install/tools/" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # archive exe | ||||||
|  | 
 | ||||||
|  | source "$ROOT_DIR/pkginfo.sh" | ||||||
|  | _pkgname="$1-opencv-$OpenCV_VERSION" | ||||||
|  | 
 | ||||||
|  | _rm "$ROOT_DIR/$_pkgname.exe" | ||||||
|  | mv "$ROOT_DIR/_install" "$ROOT_DIR/$_pkgname" | ||||||
|  | 
 | ||||||
|  | makensis "$ROOT_DIR/winpack.nsi" | ||||||
|  | 
 | ||||||
|  | if _detect_cmd git; then | ||||||
|  |   _git_branch=`git symbolic-ref --short -q HEAD` | ||||||
|  |   if [ "$_git_branch" == "develop" ]; then | ||||||
|  |     _git_hash=`git rev-parse --short HEAD` | ||||||
|  |     mv "$ROOT_DIR/$_pkgname.exe" "$ROOT_DIR/$_pkgname-dev-$_git_hash.exe" | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | mv "$ROOT_DIR/$_pkgname" "$ROOT_DIR/_install" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # remove from _install | ||||||
|  | 
 | ||||||
|  | _rm "$ROOT_DIR/_install/samples/generate.bat" | ||||||
|  | _rm "$ROOT_DIR/_install/tools/generate.bat" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # move back from _install | ||||||
|  | 
 | ||||||
|  | # 3rdparty/opencv | ||||||
|  | mv "$ROOT_DIR/_install/3rdparty/opencv" "$ROOT_DIR/3rdparty/opencv" | ||||||
|  | 
 | ||||||
|  | # cmake | ||||||
|  | mv "$ROOT_DIR/_install/cmake" "$ROOT_DIR/cmake" | ||||||
|  | 
 | ||||||
|  | # samples | ||||||
|  | mv "$ROOT_DIR/_install/samples" "$ROOT_DIR/samples" | ||||||
|  | 
 | ||||||
|  | # tools | ||||||
|  | mv "$ROOT_DIR/_install/tools" "$ROOT_DIR/tools" | ||||||
|  | mv "$ROOT_DIR/3rdparty/linter" "$ROOT_DIR/tools/linter" | ||||||
|  | 
 | ||||||
|  | # platforms/win | ||||||
|  | mv "$ROOT_DIR/_install/README.txt" "$ROOT_DIR/platforms/win" | ||||||
|  | 
 | ||||||
|  | mv "$ROOT_DIR/_install/projects" "$ROOT_DIR/platforms/projects" | ||||||
|  | 
 | ||||||
|  | ################################################################################ | ||||||
|  | # clean build | ||||||
|  | 
 | ||||||
|  | _rm "$ROOT_DIR/_build" | ||||||
|  | _rm "$ROOT_DIR/_output" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | _echo_d "Win pack success" | ||||||
| @ -11,7 +11,7 @@ | |||||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
| // See the License for the specific language governing permissions and
 | // See the License for the specific language governing permissions and
 | ||||||
| // limitations under the License.
 | // limitations under the License.
 | ||||||
| #include "api/api.h" | #include "mynteye/api/api.h" | ||||||
| 
 | 
 | ||||||
| #ifdef WITH_BOOST_FILESYSTEM | #ifdef WITH_BOOST_FILESYSTEM | ||||||
| #include <boost/filesystem.hpp> | #include <boost/filesystem.hpp> | ||||||
| @ -22,16 +22,15 @@ | |||||||
| #include <thread> | #include <thread> | ||||||
| 
 | 
 | ||||||
| #include "mynteye/logger.h" | #include "mynteye/logger.h" | ||||||
| #include "mynteye/utils.h" | #include "mynteye/api/dl.h" | ||||||
| 
 | #include "mynteye/api/plugin.h" | ||||||
| #include "api/plugin.h" | #include "mynteye/api/synthetic.h" | ||||||
| #include "api/synthetic.h" | #include "mynteye/device/device.h" | ||||||
| #include "device/device.h" | #include "mynteye/device/device_s.h" | ||||||
| #include "device/device_s.h" | #include "mynteye/device/utils.h" | ||||||
| #include "internal/dl.h" |  | ||||||
| 
 | 
 | ||||||
| #if defined(WITH_FILESYSTEM) && defined(WITH_NATIVE_FILESYSTEM) | #if defined(WITH_FILESYSTEM) && defined(WITH_NATIVE_FILESYSTEM) | ||||||
| #if defined(OS_WIN) | #if defined(MYNTEYE_OS_WIN) | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
| @ -68,7 +67,7 @@ bool dir_exists(const fs::path &p) { | |||||||
| 
 | 
 | ||||||
| #elif defined(WITH_NATIVE_FILESYSTEM) | #elif defined(WITH_NATIVE_FILESYSTEM) | ||||||
| 
 | 
 | ||||||
| #if defined(OS_WIN) | #if defined(MYNTEYE_OS_WIN) | ||||||
| 
 | 
 | ||||||
| bool file_exists(const std::string &p) { | bool file_exists(const std::string &p) { | ||||||
|   DWORD attrs = GetFileAttributes(p.c_str()); |   DWORD attrs = GetFileAttributes(p.c_str()); | ||||||
| @ -89,8 +88,8 @@ bool dir_exists(const std::string &p) { | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| std::vector<std::string> get_plugin_paths() { | std::vector<std::string> get_plugin_paths() { | ||||||
|   std::string info_path(MYNTEYE_SDK_INSTALL_DIR); |   std::string info_path = utils::get_sdk_install_dir(); | ||||||
|   info_path.append(OS_SEP "share" OS_SEP "mynteye" OS_SEP "build.info"); |   info_path.append(MYNTEYE_OS_SEP "share" MYNTEYE_OS_SEP "mynteye" MYNTEYE_OS_SEP "build.info"); | ||||||
| 
 | 
 | ||||||
|   cv::FileStorage fs(info_path, cv::FileStorage::READ); |   cv::FileStorage fs(info_path, cv::FileStorage::READ); | ||||||
|   if (!fs.isOpened()) { |   if (!fs.isOpened()) { | ||||||
| @ -184,16 +183,17 @@ std::vector<std::string> get_plugin_paths() { | |||||||
|   } |   } | ||||||
|   plats.push_back(host_os + "-" + host_arch); |   plats.push_back(host_os + "-" + host_arch); | ||||||
| 
 | 
 | ||||||
|   std::vector<std::string> dirs{MYNTEYE_SDK_ROOT_DIR, MYNTEYE_SDK_INSTALL_DIR}; |   std::vector<std::string> dirs{ | ||||||
|  |       utils::get_sdk_root_dir(), utils::get_sdk_install_dir()}; | ||||||
|   for (auto &&plat : plats) { |   for (auto &&plat : plats) { | ||||||
|     for (auto &&dir : dirs) { |     for (auto &&dir : dirs) { | ||||||
|       auto &&plat_dir = dir + OS_SEP "plugins" + OS_SEP + plat; |       auto &&plat_dir = dir + MYNTEYE_OS_SEP "plugins" + MYNTEYE_OS_SEP + plat; | ||||||
|       // VLOG(2) << "plat_dir: " << plat_dir;
 |       // VLOG(2) << "plat_dir: " << plat_dir;
 | ||||||
|       if (!dir_exists(plat_dir)) |       if (!dir_exists(plat_dir)) | ||||||
|         continue; |         continue; | ||||||
|       for (auto &&name : names) { |       for (auto &&name : names) { | ||||||
|         // VLOG(2) << "  name: " << name;
 |         // VLOG(2) << "  name: " << name;
 | ||||||
|         auto &&path = plat_dir + OS_SEP + name; |         auto &&path = plat_dir + MYNTEYE_OS_SEP + name; | ||||||
|         if (!file_exists(path)) |         if (!file_exists(path)) | ||||||
|           continue; |           continue; | ||||||
|         paths.push_back(path); |         paths.push_back(path); | ||||||
| @ -226,7 +226,7 @@ API::API(std::shared_ptr<Device> device) : device_(device) { | |||||||
|              "to write the image params. If you update the SDK from " |              "to write the image params. If you update the SDK from " | ||||||
|              "1.x, the `SN*.conf` is the file contains them. Besides, " |              "1.x, the `SN*.conf` is the file contains them. Besides, " | ||||||
|              "you could also calibrate them by yourself. Read the guide " |              "you could also calibrate them by yourself. Read the guide " | ||||||
|              "doc (https://github.com/slightech/MYNT-EYE-SDK-2-Guide) " |              "doc (https://github.com/slightech/MYNT-EYE-S-SDK-Guide) " | ||||||
|              "to learn more."; |              "to learn more."; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||