From deb146f786f781849b9f138ae93f874e2dd98d09 Mon Sep 17 00:00:00 2001 From: TinyOh Date: Tue, 23 Apr 2019 16:19:52 +0800 Subject: [PATCH] feat: add cmake project --- platforms/projects/cmake/CMakeLists.txt | 74 ++++++++++++++++++++++++ platforms/projects/cmake/mynteye_demo.cc | 48 +++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 platforms/projects/cmake/CMakeLists.txt create mode 100644 platforms/projects/cmake/mynteye_demo.cc diff --git a/platforms/projects/cmake/CMakeLists.txt b/platforms/projects/cmake/CMakeLists.txt new file mode 100644 index 0000000..1622a0a --- /dev/null +++ b/platforms/projects/cmake/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required(VERSION 3.0) + +project(mynteye_demo VERSION 1.0.0 LANGUAGES C CXX) + +# flags + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -march=native") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native") + +# packages + +if(MSVC) + set(SDK_ROOT "$ENV{MYNTEYE_SDK_ROOT}") + if(SDK_ROOT) + message(STATUS "MYNTEYE_SDK_ROOT: ${SDK_ROOT}") + list(APPEND CMAKE_PREFIX_PATH + "${SDK_ROOT}/lib/cmake" + "${SDK_ROOT}/3rdparty/opencv/build" + ) + else() + message(FATAL_ERROR "MYNTEYE_SDK_ROOT not found, please install SDK firstly") + endif() +endif() + +## mynteyed + +find_package(mynteye REQUIRED) +message(STATUS "Found mynteye: ${mynteye_VERSION}") + +# When SDK build with OpenCV, we can add WITH_OPENCV macro to enable some +# features depending on OpenCV, such as ToMat(). +if(mynteye_WITH_OPENCV) + add_definitions(-DWITH_OPENCV) +endif() + +## OpenCV + +# Set where to find OpenCV +#set(OpenCV_DIR "/usr/share/OpenCV") + +# When SDK build with OpenCV, we must find the same version here. +find_package(OpenCV REQUIRED) +message(STATUS "Found OpenCV: ${OpenCV_VERSION}") + +# targets + +include_directories( + ${OpenCV_INCLUDE_DIRS} +) + +## mynteyed_demo + +add_executable(mynteye_demo mynteye_demo.cc) +target_link_libraries(mynteye_demo mynteye ${OpenCV_LIBS}) + + +# Build +# mkdir _build +# cd _build +# +# # win +# cmake -G "Visual Studio 15 2017 Win64" .. +# msbuild.exe ALL_BUILD.vcxproj /property:Configuration=Release +# +# .\Release\mynteyed_demo.exe +# +# # unix +# cmake .. +# make +# +# ./mynteye_demo diff --git a/platforms/projects/cmake/mynteye_demo.cc b/platforms/projects/cmake/mynteye_demo.cc new file mode 100644 index 0000000..54053e4 --- /dev/null +++ b/platforms/projects/cmake/mynteye_demo.cc @@ -0,0 +1,48 @@ +#include +#include + +#include "mynteye/api/api.h" + +MYNTEYE_USE_NAMESPACE + +int main(int argc, char const *argv[]) { + auto &&api = API::Create(0, nullptr); + if (!api) return 1; + + bool ok; + auto &&request = api->SelectStreamRequest(&ok); + if (!ok) return 1; + api->ConfigStreamRequest(request); + api->Start(Source::VIDEO_STREAMING); + + double fps; + double t = 0.01; + std::cout << "fps:" << std::endl; + + cv::namedWindow("frame"); + + while (true) { + api->WaitForStreams(); + + auto &&left_data = api->GetStreamData(Stream::LEFT); + auto &&right_data = api->GetStreamData(Stream::RIGHT); + + cv::Mat img; + if (!left_data.frame.empty() && !right_data.frame.empty()) { + double t_c = cv::getTickCount() / cv::getTickFrequency(); + fps = 1.0/(t_c - t); + printf("\b\b\b\b\b\b\b\b\b%.2f", fps); + t = t_c; + cv::hconcat(left_data.frame, right_data.frame, img); + cv::imshow("frame", img); + } + + char key = static_cast(cv::waitKey(1)); + if (key == 27 || key == 'q' || key == 'Q') { // ESC/Q + break; + } + } + + api->Stop(Source::VIDEO_STREAMING); + return 0; +}