0

我无法将 OpenCV 与 Intel Realsense Viewer 源代码集成。

注意:我目前使用的是 Windows 10。

我正在使用 Visual Studio 2017。msvc 14.12

opencv 版本是 3.4.1(windows pack),这是为您预先构建的版本。

我从 github 构建并安装了intel realsense sdk。这是成功的。我还使用下载的 openCV构建并成功安装了OpenCV 示例

当我尝试将OpenCV链接到realsense 查看器项目时出现问题

我尝试将 openCV 链接到 Intel Realsense Viewer 的步骤:

  1. 在 Visual Studio 中打开 intel realsense sdk 解决方案(即名为 librealsense2 的 .sln)

  2. 转到 Visual Studio 内“解决方案资源管理器”面板中的 realsense-vewier 项目

  3. 右键单击项目“realsense-viewer”,然后选择属性

  4. 确保上面的 2 个下拉框有“x64”和“所有配置”

  5. 转到 C/C++ -> 常规选项(从左侧白框开始),然后转到“其他包含目录”

  6. 在 %OpenCVDownloadRoot%/build/include 和 %OpenCVDownloadRoot%/build/include/opencv 目录中添加(这是示例 OpenCV 项目的配置

现在,openCV 中的一些函数没有在“realsense-viewer”项目中正确链接(这很奇怪,因为 SDK 中 OpenCV 项目中的工作,即使属性相同。错误如下如下: 在此处输入图像描述

所以我按照一些额外的步骤来看看我是否可以让它工作。

  1. 在属性对话框(我们刚刚进入的那个)中,而不是选择 C/C++,选择“链接器”

  2. 在“附加库目录”选项中,添加 %OpenCVDownloadRoot%/build/x64/vc15/lib

  3. 在“链接器”属性中,搜索输入(链接器 - > 输入)

  4. 在“附加依赖项”选择中添加“opencv_world341d.lib”。

现在我们得到一个完全不同的错误: 在此处输入图像描述

现在 realsense 库没有被识别。除了上述之外,没有修改其他属性。我可以确认第 10 步会导致所有这些错误。即使我在执行完所有步骤后反转步骤 10 的操作,上述错误仍然存​​在 -> 这一定是 Visual Studio 错误。

关于如何让 OpenCV 3.4.1 + realsense-viewer(来自 SDK)在 Visual Studio 2017 中工作的任何帮助或提示?

编辑:我已经阅读: 什么是未定义的引用/未解决的外部符号错误,我该如何解决?

但是我已经正确链接了 glfw 和所有其他需要链接的东西,以便错误消息消失。我相信这个问题可能是英特尔的一个错误,或者是一个需要解决方法的错误

4

1 回答 1

1

在公园散步后找到的解决方案(假设您使用的是 windows 10,visual studio 2017 用于该项目):

进入您本地的 librealsense 项目文件夹

转到C:\Users\yourName\to\your\local\realsense\folder\librealsense\tools\CMakeLists.txt

将此添加到文件末尾:

find_package(需要 OpenCV)

列表(附加依赖 realsense2 ${OpenCV_LIBS})

所以整个文件是这样的:

最低要求的 cmake 版本:3.1.0 cmake_minimum_required(VERSION 3.1.0)

项目(RealsenseTools)

将命令行编译命令保存在构建输出集中(CMAKE_EXPORT_COMPILE_COMMANDS 1)

在构建期间查看 makefile 命令

设置(CMAKE_VERBOSE_MAKEFILE 开启)

此参数用于在构建时禁用图形示例

保存到磁盘目标。选项(BUILD_GRAPHICAL_EXAMPLES“构建图形示例。”开)

包括(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) 设置(CMAKE_CXX_FLAGS "$d=c++1}-$d=c++1} ) elseif(COMPILER_SUPPORTS_CXX0X) 设置(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif()

if(BUILD_GRAPHICAL_EXAMPLES) find_package(OpenGL) if(NOT OPENGL_FOUND) 消息(FATAL_ERROR "\n\n OpenGL 包丢失!\n\n") endif()

set(DEPENDENCIES realsense2 ${OPENGL_LIBRARIES})

if(WIN32)
    list(APPEND DEPENDENCIES glfw3)
else()
    # Find glfw header
    find_path(GLFW_INCLUDE_DIR NAMES GLFW/glfw3.h
        PATHS /usr/X11R6/include
              /usr/include/X11
              /opt/graphics/OpenGL/include
              /opt/graphics/OpenGL/contrib/libglfw
              /usr/local/include
              /usr/include/GL
              /usr/include
    )
    # Find glfw library
    find_library(GLFW_LIBRARIES NAMES glfw glfw3
            PATHS /usr/lib64
                  /usr/lib
                  /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
                  /usr/local/lib64
                  /usr/local/lib
                  /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
                  /usr/X11R6/lib
    )
    if(APPLE)
        find_library(COCOA_LIBRARY Cocoa)
        find_library(IOKIT_LIBRARY IOKit)
        find_library(COREVIDEO_LIBRARY CoreVideo)
        LIST(APPEND DEPENDENCIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
    endif()
    list(APPEND DEPENDENCIES m ${GLFW_LIBRARIES} ${LIBUSB1_LIBRARIES})
    include_directories(${GLFW_INCLUDE_DIR})
endif() else()
set(DEPENDENCIES realsense2)
if(NOT WIN32)
    list(APPEND DEPENDENCIES m ${LIBUSB1_LIBRARIES})
endif() endif()

允许这个项目访问 opencv find_package(OpenCV REQUIRED)

find_package(OpenCV REQUIRED) set(DEPENDENCIES realsense2 ${OpenCV_LIBS})

add_subdirectory(终端)add_subdirectory(fw-logger)add_subdirectory(枚举设备)add_subdirectory(realsense-viewer)add_subdirectory(数据收集)add_subdirectory(深度质量)add_subdirectory(rosbag-inspector)

然后使用 cmake gui 重建项目

于 2018-03-17T06:04:33.690 回答