opencv - 为 Windows 10 IoT Core ARM (Raspberry Pi) 编译 OpenCV 3

标签 opencv arm raspberry-pi3 windowsiot windows-iot-core-10

使用 Windows 操作系统上托管的 Visual Studio 为 Windows 10 IoT Core ARM (Raspberry Pi) 编译 OpenCV 3.* 的最简单方法是什么?

我可以在其他贡献模块中使用 DNN(深度神经网络)模块吗?

最佳答案

我在尝试为在 Raspberry Pi 3 上运行的 Windows 10 IoT Core (10.0.16299.0) 编译 OpenCV 3.4.1 时有些吃力,所以我决定与社区分享我的经验。
要求
您需要继续进行的是:

  • OpenCV 源代码(来自 Github)。 opencv 用于核心功能和 opencv_contrib 附加模块。
  • CMake-gui ( here )
  • 带有 ARM 工具集和 Windows 10 SDK 的 Visual Studio。

  • 我使用了最新的 Visual Studio 2017 (15.6.2)。社区版就够了。确保您具有所需的 Visual Studio 组件:
  • 适用于 UWP 的 Windows 10 SDK (10.0.16299.0):C++
  • UWP 的 Visual C++ 运行时
  • 用于 ARM 的 Visual C++ 编译器和库

  • SDK 版本显然应与目标操作系统平台版本相匹配。截至今天,它是 10.0.16299.0。
    配置
    启动 CMake-gui。选择您的 OpenCV 源代码(根路径)在哪里以及您希望构建的位置(配置、临时和输出)存储在哪里。点击配置 .
    CMake-gui initial window
    在弹出窗口中选择 Visual Studio 15 2017 ARM 作为生成器(工具集和架构版本)并选择 “指定交叉编译选项” .
    enter image description here
    提供:
  • 操作系统: WindowsStore
  • 版本: 10.0
  • 处理器:

  • enter image description here
    成功生成(可能带有一些警告)应以“配置完成”消息结束并显示制作选项。
    寻找 OPENCV_EXTRA_MODULES_PATH选项并为您提供路径opencv_contrib/modules文件夹。
    enter image description here
    点击配置再次。
    现在您可以选择要包含在构建中的模块。
    在我的配置中,我有:
  • 启用构建 opencv-world 单一库 (BUILD_opencv_world)
  • 禁用构建测试和应用程序(BUILD_TESTSBUILD_PERF_TESTSBUILD_opencv_apps)
  • ( 可选 )启用 Raspberry Pi NEON 和 VFP3 优化( ENABLE_VPF3=ONENABLE_NEON=ON )。您可以使用 Cmake 中的“添加条目”(作为 bool 值)添加它们,但目前存在一些 OpenCV 处理这些选项的问题。

  • 我不得不 禁用 描述符 ( BUILD_opencv_line_descriptor ) 和显着性模块 ( BUILD_opencv_saliency ) 导致它们与 Microsoft 特定的 __popcnt 存在问题,这在 ARM 平台上对于 MS 编译器不可用。
    我使用了一个技巧来为 Windows 启用 DNN 模块。在 /modules/dnn/CMakeList.txt你必须评论前三行:
    #if(WINRT)
    #  ocv_module_disable(dnn)
    #endif()
    
    配置再次点击生成 .在 Visual Studio 中打开项目 (.SLN)。
    enter image description here
    默认项目是 ALL_BUILD,这是要构建的项目。选择要构建的配置(发布或调试)。请注意,生成的导入库 (.lib) 和 dll (.dll) 对于不同的配置会有不同的名称。
    enter image description here
    而已!这些库可以链接到 UWP 应用程序 (C++/CX) 和 ARM 平台的库。
    此外 - 您可以使用相同的过程为 构建自己的配置。 x64 x86 平台:再次从 Cmake-gui 开始,选择不同的构建文件夹,并在配置的第一步中选择 Visual Studio 15 2017 x64 x86 作为您的生成器,然后在交叉编译选项中进行相应的处理。其余的配置过程看起来是一样的。
    要在 Windows 10 IoT Core 上进一步使用 OpenCV,您可以查看 Microsoft 本身提供的示例,例如here .

    关于opencv - 为 Windows 10 IoT Core ARM (Raspberry Pi) 编译 OpenCV 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49350733/

    相关文章:

    php - 在 Raspberry Pi 上强制自动启动应用程序

    python - 为什么我不能在 Crontab 中使用 Python 3?

    python - 使用 RSTP 的 DNN OpenCV Python 总是在几分钟后崩溃

    python - 如何使用 Google Vision API 和 Python 改进 OCR 结果?

    python - 如何在 Python OpenCV 中获取轮廓的 x、y 位置

    azure - 我可以将 MSI token 用于 Azure DevOps REST API吗?

    python - 在图像上查找点坐标

    c - 在 XCode 中为模拟器编译内联 asm 但无法为设备编译

    arm - 如何以编程方式识别ARM板

    c - 我找不到编译器中指出的函数