为Windows 10 Universal App构建OpenCV

时间:2016-01-17 13:14:57

标签: c++ opencv uwp windows-10-universal

首先,当我使用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::

intellisense永远不会引导我进入CameraOptiosUI。奇怪的是,当我去MSN网站时: https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.capture.cameraoptionsui.aspx, 看起来这个类确实存在。 Windows 10平台中的类在哪里?

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

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:3)

来自Lucian Wischik的博客

如何为UWP构建OpenCV本机dll OpenCV在GitHub上。截至2015年11月,有三个相关的分叉/分支机构:

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

import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class HTMLDataExtraction {

    public static void main(String[] args) throws IOException {
        Document document = Jsoup.parse(new File("A:/Workspaces/MarsWorkspace/jSoupExample/src/main/java/com/URLs/jSoupExample/HTMLParser.html"),
                                        "UTF-8"); //Use execute method Or corresponding Http Methods while connecting to particular URI

        document.select("#img3464864").forEach(element -> {
            System.out.println("ITEM_IMG :" + element.attr("src")); // use absUrl(), to get absolute URL
        });

        document.select("td.item_name > div [itemprop]").forEach(element -> {
            if (element.hasClass("cpa"))
                System.out.println("ITEM_NAME :" + element.text());
            if (element.hasClass("item_desc"))
                System.out.println("ITEM_DESCRIPTION :" + element.text());
        });

        document.select("td.item_price").forEach(element -> {
            System.out.println("ITEM_PRICE:" + element.text());
        });
    }
}

存储库1是主人。在其中,使用CMake为所有不同平台构建本机OpenCV二进制文件。据我所知,此存储库仅通过CMake支持构建Windows应用商店和Windows Phone 8.0和8.1应用。它似乎没有UWP。它还要求你根据readme.txt安装一些特定的旧版VS.

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

Branch [3]包含Visual Studio .sln文件,您可以从中创建所有本机OpenCV二进制文件的UWP版本:x86,x64和ARM,Debug和Release。 Release版本实际上有点不稳定,但我提交了PR#69以使它们构建正确。所以:如果你克隆这个存储库,选择这个分支,设置一个环境变量,然后打开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

答案 1 :(得分:0)

如果要使用CameraOptionsUI-Class,可以在Solution Explorer中为其添加所需的Reference。在“参考”下 - 菜单。右键单击和“添加引用”应该为您提供添加扩展的菜单。在那里,您将找到Desktop-UWP-Apps的扩展或类似的东西。只需添加它们,您的Visual Studio就应该找到CameraOptionsUI-Class。此类适用于Desktop-Apps;)