为UWP构建OpenCV

FER*_*man 1 c++ opencv cmake uwp

我目前正在努力为UWP构建OpenCV.

我已经搜索了很多东西,并发现微软的OpenCV Github Repo技术应该做到这一点.然而,这个回购以及我在这方面发现的其他所有东西都已经过时(Visual Studio 2015,旧的OpenCV版本等).我需要使用OpenCV 3.3,因为它是一个跨平台项目,我不想仅仅因为过时的git repo而重新编译其他所有内容.

任何人都可以解释使用CMake从UWP官方回购中构建OpenCV的过程吗?


我的第一次尝试是简单地使用Windows Dll,但是我的应用程序不会向我喊"无法加载模块".然后,我尝试构建OpenCV Visual Studio项目文件,如此此处所述.但是,这不适合我,因为它会抛出以下错误:

cmake/OpenCVUtils.cmake上的CMake错误:440(如果):如果给定参数:

"(" "OR" "OFF" ")"
Run Code Online (Sandbox Code Playgroud)

指定了未知参数调用堆栈(最近一次调用):CMakeLists.txt:317(OCV_OPTION)

它还告诉我检查CMakeOutput.log但是到处都是0错误.

如果有人能告诉我如何摆脱这个错误或者在CMake GUI中为了为UWP构建OpenCV需要改变什么,那就太好了!

编辑:

我还尝试使用平台特定的WinRT工具链编译OpenCV,如平台/ winrt中所示.它并没有真正改变任何东西(我甚至不确定它是否应该),我仍然得到"无法加载Dll:无法找到指定的模块".也许GPPK在他的假设中是正确的,它更像是UWP问题,而不是OpenCV问题.无论如何,如果有人对此有所了解,我真的很想得到一些帮助!

FER*_*man 5

好吧,我还没有得到答案,所以我设法自己做(或多或少).

我是这样做的:

先决条件

  • Visual Studio(2017)
  • UWP SDK
  • CMake的
  • 来自官方回购的OpenCV

脚步

  1. 创建一个您希望内置UWP库的构建文件夹.
  2. 在此文件夹中启动PowerShell并执行以下命令(使用本地OpenCV路径交换C:\ OpenCV): cmake -G "Visual Studio 15 2017" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERS ION="10.0" -DCMAKE_VS_EFFECTIVE_PLATFORMS=x86 -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF C:\OpenCV
  3. 如果您收到与我相同的错误消息(请参阅问题以获取更多详细信息),请转到OpenCV文件夹中的根CMakeLists.txt并#在第317行(OCV_OPTION(ENABLE_PYLINT))前面添加一个.这应该修复它,检查,再次执行上面的命令.
  4. 确保输出声明" Windows RT支持是 "和" 为Microsoft平台构建:Windows ".
  5. 在build文件夹中打开OpenCV.sln.确保所有项目都是"Windows Store"或"Universal Windows"类型,并构建ALL_BUILD项目两次:一次进入Release配置,一次进入Debug.然后构建INSTALL项目.

就是这样,你应该在安装文件夹中找到构建的Dll.第3步可能是OpenCV中的一个错误,希望在即将发布的版本中修复.