为 Windows 10 个通用应用构建 OpenCV

Building OpenCV for Windows 10 Universal App

首先,当我使用带有此命令的 CMake 生成 OpenCV 3.1 的解决方案时:

set VLD_DIR=vld_dir
mkdir %VLD_DIR%
set OPENCV_TEST_DATA_PATH=..\..\opencv_extra
set OPENCV_PERF_VALIDATION_DIR=%VLD_DIR%
cmake .. -G "Visual Studio 14 2015" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0

然后用 Visual Studio 2015 构建它,我有一堆错误,其中一个是:

 Error  C2653   'CameraOptionsUI': is not a class or namespace name opencv_videoio  G:\opencv\modules\videoio\src\cap_winrt\CaptureFrameGrabber.cpp 100 

然后当我尝试再次使用 visual studio 2015 为 Windows 10 制作一个空白的通用应用程序时,然后在随机函数上输入:

 Windows::Media::Capture::

智能感知从未将我引导至 CameraOptiosUI。奇怪的是,当我访问 MSN 站点时: https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.capture.cameraoptionsui.aspx, 看起来 class 确实存在。 Windows 10 平台中的 class 在哪里?

其他信息: 我构建了相同的 OpenCV,但对于 UWP 8.1 版,我成功了。然后我来到与上面的错误相同的行(CaptureFrameGrabber.cpp 第 100 行),它指向 class ref class Windows::Media::Capture::CameraOptionsUI。为什么在版本 10 中,我不能再指向 class?它改变了 API 吗?

抱歉我的英语不好。

来自 Lucian Wischik 博客

如何为 UWP 构建 OpenCV 本机 dll OpenCV 在 GitHub 上。截至 2015 年 11 月撰写本文时,共有三个相关 forks/branches:

1 https://github.com/itseez/opencv

 +- [2] fork https://github.com/Microsoft/opencv

      +- [3] branch https://github.com/Microsoft/opencv/tree/vs2015-samples

资源库1为主。在其中,原生 OpenCV 二进制文件是使用 CMake 为所有不同平台构建的。据我所知,此存储库仅支持通过 CMake 构建 Windows Store 和 Windows Phone 8.0 和 8.1 应用程序。它似乎没有UWP。并且它还要求您根据其 readme.txt.

安装一些特定的旧版本 VS

Fork [2] 似乎没有带来任何新东西。

分支 [3] 包含 Visual Studio .sln 文件,您可以从中构建所有本机 OpenCV 二进制文件的 UWP 版本:x86、x64 和 ARM、调试和发布。 Release 构建实际上有点不稳定,但我提交了 PR #69 使它们构建正确。所以:如果你克隆这个存储库,select 这个分支,设置一个环境变量,然后打开 vs2015/WS/10.0/ARM/OpenCV.sln,或者 x86/OpenCV.sln,或者x64/OpenCV.sln,那么你就可以为 OpenCV 成功构建 UWP 二进制文件了。这将为每个体系结构+构建组合生成 15 个二进制文件。

http://blogs.msdn.com/b/lucian/archive/2015/11/28/opencv-building-uwp-binaries.aspx

如果您想使用 CameraOptionsUI-Class,您可以在解决方案资源管理器中为其添加所需的参考。在 "Reference" 菜单下。右键单击 "add Reference" 应该会为您提供一个用于添加扩展的菜单。在那里你会找到 Desktop-UWP-Apps 的扩展或类似的东西。只需添加它们,您的 Visual Studio 就会找到 CameraOptionsUI-Class。此 Class 适用于桌面应用程序 ;)