使用 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 时有些吃力,所以我决定与社区分享我的经验。
要求
您需要继续进行的是:
我使用了最新的 Visual Studio 2017 (15.6.2)。社区版就够了。确保您具有所需的 Visual Studio 组件:
SDK 版本显然应与目标操作系统平台版本相匹配。截至今天,它是 10.0.16299.0。
配置
启动 CMake-gui。选择您的 OpenCV 源代码(根路径)在哪里以及您希望构建的位置(配置、临时和输出)存储在哪里。点击配置 .
在弹出窗口中选择 Visual Studio 15 2017 ARM 作为生成器(工具集和架构版本)并选择 “指定交叉编译选项” .
提供:
成功生成(可能带有一些警告)应以“配置完成”消息结束并显示制作选项。
寻找
OPENCV_EXTRA_MODULES_PATH
选项并为您提供路径opencv_contrib/modules
文件夹。点击配置再次。
现在您可以选择要包含在构建中的模块。
在我的配置中,我有:
BUILD_opencv_world
)BUILD_TESTS
、BUILD_PERF_TESTS
、BUILD_opencv_apps
)ENABLE_VPF3=ON
,ENABLE_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)。默认项目是 ALL_BUILD,这是要构建的项目。选择要构建的配置(发布或调试)。请注意,生成的导入库 (.lib) 和 dll (.dll) 对于不同的配置会有不同的名称。
而已!这些库可以链接到 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/