Paw*_*wel 3 opencv arm windowsiot raspberry-pi3 windows-iot-core-10
使用Windows操作系统上托管的Visual Studio为Windows 10 IoT核心ARM(Raspberry Pi)编译OpenCV 3.*的最简单方法是什么?
我可以在其他contrib模块中使用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版本显然应与目标OS平台版本匹配.截至今天它是10.0.16299.0.
启动CMake-gui.选择存储OpenCV源代码(根路径)的位置以及构建位置(配置,临时和输出).单击配置.
在弹出窗口中,选择Visual Studio 15 2017 ARM作为生成器(工具集和体系结构版本),然后选择"指定交叉编译选项".
提供:
成功生成(可能带有一些警告)将以"配置完成"消息结束并显示make选项.
查找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中的"添加条目"(作为布尔值)添加它们,但目前有一些OpenCV会处理这些选项.我不得不禁用 descriptor(BUILD_opencv_line_descriptor)和显着模块(BUILD_opencv_saliency)导致他们遇到Microsoft特定的__popcnt问题,这在ARM平台上不适用于MS编译器.
我使用了一个技巧来为Windows启用DNN模块.在/modules/dnn/CMakeList.txt中,您必须先评论三行:
#if(WINRT)
# ocv_module_disable(dnn)
#endif()
Run Code Online (Sandbox Code Playgroud)
再次配置,然后单击Generate.在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自己提供的示例,例如此处.