diff --git a/sample/zed/CMakeLists.txt b/sample/zed/CMakeLists.txt index 227365f..41c5132 100644 --- a/sample/zed/CMakeLists.txt +++ b/sample/zed/CMakeLists.txt @@ -7,12 +7,14 @@ message(STATUS ${CMAKE_MODULE_PATH}) FIND_PACKAGE(CUDA REQUIRED) find_package(OpenCV REQUIRED core) # dammy -if(OpenCV_VERSION VERSION_LESS 3.0) - find_package(OpenCV REQUIRED core highgui imgproc) # 2.x +if(OpenCV_VERSION VERSION_LESS 3.1) + message(FATAL_ERROR "Zed SDK requires OpenCV 3.1") else() find_package(OpenCV REQUIRED core highgui imgproc imgcodecs videoio) # 3.x endif() +find_package(ZED 2.0 REQUIRED) + find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) @@ -25,13 +27,15 @@ include_directories(${OpenCV_INCLUDE_DIRS}) include_directories(${GLEW_INCLUDE_DIRS}) include_directories(${GLFW_INCLUDE_DIRS}) -include_directories(${ZED_SDK_INCLUDE_DIR}) +include_directories(${ZED_INCLUDE_DIRS}) if(NOT WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11") endif() +link_directories(${OpenCV_LIBRARY_DIRS}) +link_directories(${ZED_LIBRARY_DIR}) + CUDA_ADD_EXECUTABLE(zed_demo zed_demo.cpp demo.cpp @@ -43,7 +47,7 @@ CUDA_ADD_EXECUTABLE(zed_demo TARGET_LINK_LIBRARIES(zed_demo sgm ${CUDA_LIBRARIES} ${CUDA_nppi_LIBRARY} - ${OpenCV_LIBS} + ${OpenCV_LIBRARIES} ${GLEW_LIBRARIES} ${GLFW_LIBRARY} ${OPENGL_LIBRARY} - ${ZED_SDK_LIB} + ${ZED_LIBRARIES} ) diff --git a/sample/zed/zed_demo.cpp b/sample/zed/zed_demo.cpp index 2edc810..bd97107 100644 --- a/sample/zed/zed_demo.cpp +++ b/sample/zed/zed_demo.cpp @@ -23,7 +23,7 @@ limitations under the License. #include -#include +#include #include @@ -40,19 +40,21 @@ int main(int argc, char* argv[]) { } // init zed cam - auto cap = new sl::zed::Camera(sl::zed::ZEDResolution_mode::VGA); - sl::zed::ERRCODE err = cap->init(sl::zed::MODE::PERFORMANCE, 0, true); - if (err != sl::zed::ERRCODE::SUCCESS) { - std::cout << sl::zed::errcode2str(err) << std::endl; + sl::Camera cap; + sl::InitParameters init_param; + init_param.camera_resolution = sl::RESOLUTION::RESOLUTION_HD1080; + init_param.camera_fps = 15; + sl::ERROR_CODE err = cap.open(init_param); + if (err != sl::ERROR_CODE::SUCCESS) { + std::cout << sl::errorCode2str(err) << std::endl; exit(EXIT_FAILURE); } - int width = cap->getImageSize().width; - int height = cap->getImageSize().height; + int width = cap.getResolution().width; + int height = cap.getResolution().height; sgm::StereoSGM ssgm(width, height, disp_size, 8, 16, sgm::EXECUTE_INOUT_CUDA2CUDA); - SGMDemo demo(width, height); if (demo.init()) { printf("fail to init SGM Demo\n"); @@ -72,13 +74,28 @@ int main(int argc, char* argv[]) { cv::Mat h_input_left(height, width, CV_8UC1); while (!demo.should_close()) { - cap->grab(sl::zed::SENSING_MODE::FULL, false, false); + err = cap.grab({sl::SENSING_MODE::SENSING_MODE_STANDARD, false, false, false}) + if (err != sl::ERROR_CODE::SUCCESS) { + std::cout << sl::errorCode2str(err) << std::endl; + exit(EXIT_FAILURE); + } - sl::zed::Mat left_zm = cap->retrieveImage_gpu(sl::zed::SIDE::LEFT); - sl::zed::Mat right_zm = cap->retrieveImage_gpu(sl::zed::SIDE::RIGHT); + sl::Mat left_zm; + err = cap.retrieveImage(left_zm, sl::VIEW::VIEW_LEFT, sl::MEM::MEM_GPU); + if (err != sl::ERROR_CODE::SUCCESS) { + std::cout << sl::errorCode2str(err) << std::endl; + exit(EXIT_FAILURE); + } + + sl::Mat right_zm; + err = cap.retrieveImage(right_zm, sl::VIEW::VIEW_RIGHT, sl::MEM::MEM_GPU); + if (err != sl::ERROR_CODE::SUCCESS) { + std::cout << sl::errorCode2str(err) << std::endl; + exit(EXIT_FAILURE); + } - nppiRGBToGray_8u_AC4C1R(left_zm.data, width * 4, d_input_left, width, roi); - nppiRGBToGray_8u_AC4C1R(right_zm.data, width * 4, d_input_right, width, roi); + nppiRGBToGray_8u_AC4C1R(left_zm.getPtr(sl::MEM::MEM_GPU), width * 4, d_input_left, width, roi); + nppiRGBToGray_8u_AC4C1R(right_zm.getPtr(sl::MEM::MEM_GPU), width * 4, d_input_right, width, roi); ssgm.execute(d_input_left, d_input_right, (void**)&d_output_buffer); @@ -100,5 +117,5 @@ int main(int argc, char* argv[]) { cudaFree(d_input_left); cudaFree(d_input_right); - delete cap; + cap.close(); }