上一教程: 在 Eclipse 中使用 OpenCV (插件 CDT)
下一教程: 如何在“Microsoft Visual Studio”中构建 OpenCV 应用程序
原作者 Bernát Gábor
兼容性 OpenCV >= 3.0
警告 本教程可能包含过时信息。
此处的描述在 Windows 7 SP1 上进行了测试。但是,它也应该适用于任何其他相对较新的 Windows 操作系统版本。如果您按照以下步骤操作后遇到错误,请随时通过我们的 OpenCV 问答论坛 联系我们。我们将尽力帮助您。
注意 要使用 OpenCV 库,您有两种选择:使用预构建库安装 或 从源文件构建自己的库 。虽然第一种方法更容易完成,但它仅适用于您使用最新的 Microsoft Visual Studio IDE 编码并且不利用我们集成到库中的最先进技术的情况。.. _Windows_Install_Prebuild
使用预构建库安装
启动您选择的 Web 浏览器,然后访问我们的 Sourceforge 页面 。
选择您要使用的版本并下载。
确保您具有管理员权限。解压自解压存档。
您可以检查所选路径下的安装情况,如下所示。
要完成安装,请转到 设置 OpenCV 环境变量并将其添加到系统路径 部分。
使用 git-bash (版本 >= 2.14.1) 和 cmake (版本 >= 3.9.1) 安装
您必须下载 cmake (版本 >= 3.9.1) 并安装它。您必须在安装过程中将 cmake 添加到 PATH 变量。
您必须安装 git-bash (版本 >= 2.14.1) 。安装过程中不要将 git 添加到 PATH 变量。
运行 git-bash。您将看到一个命令行窗口。假设您想将 opencv 和 opencv_contrib 构建到 c:/lib
在 git 命令行中输入以下命令(如果文件夹不存在)
将此脚本另存为 installOCV.sh,保存到 c:/lib#!/bin/bash -e
myRepo=$(pwd)
CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 16 2019"
#CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 15 2017 Win64"
#CMAKE_GENERATOR_OPTIONS=(-G"Visual Studio 16 2019" -A x64) # 需要 CMake 3.14+
if [ ! -d "$myRepo/opencv" ]; then
echo "克隆 opencv"
git clone https://github.com/opencv/opencv.git
else
cd opencv
git pull --rebase
cd ..
fi
if [ ! -d "$myRepo/opencv_contrib" ]; then
echo "克隆 opencv_contrib"
git clone https://github.com/opencv/opencv_contrib.git
else
cd opencv_contrib
git pull --rebase
cd ..
fi
RepoSource=opencv
mkdir -p build_opencv
pushd build_opencv
CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON)
set -x
cmake "${CMAKE_GENERATOR_OPTIONS[@]}" "${CMAKE_OPTIONS[@]}" -DOPENCV_EXTRA_MODULES_PATH="$myRepo"/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource" "$myRepo/$RepoSource"
echo "************************* $Source_DIR -->debug"
cmake --build . --config debug
echo "************************* $Source_DIR -->release"
cmake --build . --config release
cmake --build . --target install --config release
cmake --build . --target install --config debug
popd
在这个脚本中,我假设您使用的是 64 位的 VS 2015CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 14 2015 Win64"
opencv 将安装到 c:/lib/install/opencv-DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource"
没有性能测试、测试、文档、CUDA 和示例CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF)
在 git 命令行中输入以下命令
喝杯咖啡……opencv 已准备就绪:就是这样!
下次运行此脚本时,opencv 和 opencv_contrib 将被更新和重新构建
从源文件构建自己的库
您也可以在以下视频中找到本教程的内容:第一部分 和 第二部分 (托管在 YouTube 上)。
VIDEO
VIDEO
警告
上面的视频早已过时,包含不准确的信息。请注意,这些视频中描述的解决方案不再受支持,甚至可能破坏您的安装。
如果您要构建自己的库,您可以从我们的 Git 仓库 获取源文件。
从头开始构建 OpenCV 库需要预先安装一些工具
您选择的 IDE(最好),或者只是一个实际上将创建二进制文件的 C++ 编译器。在这里,我们将使用 Microsoft Visual Studio 。但是,您可以使用任何其他具有有效 C++ 编译器的 IDE。
CMake ,这是一个简洁的工具,可以从 OpenCV 源文件创建项目文件(用于您选择的 IDE)。它还允许轻松配置 OpenCV 构建文件,以便创建完全满足您需求的二进制文件。
Git 用于获取 OpenCV 源文件。一个不错的工具是 TortoiseGit 。或者,您可以直接从我们的 Sourceforge 页面 下载源文件的存档版本。
OpenCV 可能有多种版本。有一个“核心”部分可以独立工作。然而,有一些第三方制作的工具和库可以提供 OpenCV 可以利用的服务。这些将以多种方式提高其功能。为了使用任何这些工具,您需要将它们下载并安装到您的系统上。
现在我们将描述完整构建的步骤(使用上述所有框架、工具和库)。如果您不需要其中某些的支持,您可以随意跳过此部分。
构建库
确保您拥有带有有效编译器的可运行IDE。对于Microsoft Visual Studio,只需安装它并确保它启动即可。
安装CMake 。只需按照向导操作,无需将其添加到路径中。默认安装选项即可。
从其官方网站 下载并安装最新版本的msysgit。还有一个便携式版本,您只需要解压即可访问Git的控制台版本。对于我们中的一些人来说,这可能就足够了。
安装TortoiseGit 。根据您使用的操作系统类型选择32位或64位版本。安装过程中,找到您的msysgit(如果它没有自动执行)。按照向导操作——大多数情况下,默认选项即可。
在您的文件系统中选择一个目录,您将把OpenCV库下载到该目录。我建议创建一个新的目录,该目录路径短且不包含特殊字符,例如`D:/OpenCV`。在本教程中,我建议您这样做。如果您使用您自己的路径并且知道自己在做什么——没问题。
将存储库克隆到选定的目录。单击*克隆*按钮后,将出现一个窗口,您可以从中选择要下载源文件的存储库(https://github.com/opencv/opencv.git )以及目标目录(`D:/OpenCV`)。
按下确定按钮,并耐心等待,因为存储库下载量很大。所需时间取决于您的互联网连接速度。
在本节中,我将介绍安装第三方库。
下载Python库 并使用默认选项安装它。您将需要几个其他的Python扩展。幸运的是,所有这些都可以通过一个名为Setuptools 的不错的工具自动安装。再次下载并安装。
安装Numpy最简单的方法是从sourceforge页面 下载其二进制文件。确保您的下载和安装完全符合您的python版本(例如版本`2.7`)。
对于英特尔线程构建模块( *TBB* ) ,下载源文件并将其解压到系统上的某个目录中。例如,可以是`D:/OpenCV/dep`。安装英特尔集成性能基元( *IPP* ) 的过程相同。为了解压归档文件,我建议使用7-Zip 应用程序。
对于Eigen 库,同样是下载并解压到`D:/OpenCV/dep`目录。
与OpenEXR 相同。
对于OpenNI框架 ,您需要安装开发版本 和PrimeSensor模块 。
对于CUDA,您同样需要两个模块:最新的CUDA工具包 和*CUDA工具SDK*。使用32位或64位安装程序根据您的操作系统下载并安装两者,并选择*完整*选项。
对于Qt框架,您需要自己构建二进制文件(除非您使用带有32位编译器的Microsoft Visual Studio 2008)。为此,请访问Qt下载 页面。下载源文件(不是安装程序!!!)。
将其解压到一个名称简洁的目录中,例如`D:/OpenCV/dep/qt/`。然后您需要构建它。使用开始菜单搜索启动*Visual Studio命令提示符*( *2010*)(或通过开始菜单“所有程序”->“Microsoft Visual Studio 2010”->“Visual Studio Tools”->“Visual Studio 命令提示符 (2010)”导航)。
现在使用此控制台窗口导航到解压的文件夹并进入其中。您应该有一个包含*Install*、*Make*等文件的文件夹。使用`dir`命令列出当前目录中的文件。到达此目录后,输入以下命令
configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
-no-qt3support -no-multimedia -no-ltcg
完成此操作大约需要10-20分钟。然后输入下一个命令,这将花费更长时间(很容易花费一个多小时)
之后,使用以下命令在Windows 7上设置Qt环境变量
setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
此外,使用PathEditor 将构建的二进制文件路径添加到系统路径。在本例中,这是`D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin`。
注意 如果您计划进行Qt应用程序开发,您也可以在此处安装*Qt Visual Studio加载项*。之后,您可以创建和构建Qt应用程序,而无需使用*Qt Creator*。一切都很好地集成到Visual Studio中。
现在启动*CMake (cmake-gui)*。您可以再次在开始菜单搜索中输入它,或者从“所有程序”->“CMake 2.8”->“CMake (cmake-gui)”中获取它。首先,选择OpenCV库源文件的目录(1)。然后,指定一个目录,您将在其中为OpenCV构建二进制文件(2)。
按“配置”按钮以指定要使用的编译器(和*IDE*)。请注意,您可以选择不同的编译器来创建64位或32位库。选择您在应用程序开发中使用的编译器。
CMake 将启动,并根据您的系统变量尝试自动查找尽可能多的包。您可以在 WITH -> WITH_X 菜单项中修改构建中使用的包(其中 *X* 是包缩写)。以下是可以启用或关闭的当前包列表:
选择您要使用的所有包,然后再次按下“配置”按钮。为了更轻松地查看构建选项,请确保选中二进制目录选择下的“分组”选项。对于某些包,CMake 可能找不到所有必需的文件或目录。在这种情况下,CMake 将在其输出窗口(位于 GUI 底部)中抛出错误,并将字段值设置为未找到的常量。例如:
对于这些,您需要手动设置查询的目录或文件的路径。之后再次按下“配置”按钮,查看您输入的值是否被接受。重复此操作,直到所有条目都正确,并且您在 GUI 的字段/值或输出部分中看不到错误。现在我想强调一个您一定会喜欢的选项:ENABLE -> ENABLE_SOLUTION_FOLDERS。OpenCV 将创建许多项目,启用此选项将确保它们在“解决方案资源管理器”中的目录中分类。如果您问我,这是一个必须的功能。
此外,您需要选择要构建的 OpenCV 部分。
BUILD_DOCS -> 它创建两个项目来构建 OpenCV 的文档(将有一个单独的项目用于构建 HTML 和 PDF 文件)。请注意,这些不会与解决方案一起构建。您需要对这些项目执行显式构建项目命令才能这样做。
BUILD_EXAMPLES -> OpenCV 附带许多示例应用程序,您可以从中学习大多数库的功能。这对于轻松尝试 OpenCV 是否在您的计算机上完全正常运行也很有用。
BUILD_PACKAGE -> 在 2.3 版之前,您可以使用它构建一个项目来构建 OpenCV 安装程序。通过这个,您可以轻松地将您的 OpenCV 版本安装到其他系统上。对于 OpenCV 的最新源文件,它会生成一个新项目,该项目只需创建一个包含 OpenCV 源代码的 zip 存档。
BUILD_SHARED_LIBS -> 使用此选项可以控制构建 DLL 文件(启用时)或静态库文件(*.lib)。
BUILD_TESTS -> OpenCV 的每个模块都分配了一个测试项目。构建这些测试项目也是一种好方法,可以测试模块是否按预期在您的系统上工作。
BUILD_PERF_TESTS -> 许多 OpenCV 函数也有性能测试。如果您关心性能,请构建并运行它们。
BUILD_opencv_python -> 不言自明。创建从 Python 语言使用 OpenCV 的二进制文件。
BUILD_opencv_world -> 生成单个“opencv_world”二进制文件(共享库或静态库,取决于 *BUILD_SHARED_LIBS*),其中包含所有模块,而不是每个模块一个二进制文件的单独二进制文件集合。
再次按下“配置”按钮,并确保没有报告错误。如果是这种情况,您可以通过按下“生成”按钮来告诉 CMake 创建项目文件。转到构建目录并打开已创建的 **OpenCV** 解决方案。根据您选择的上述选项数量,解决方案可能包含很多项目,因此在 IDE 启动时请耐心等待。现在您需要构建 *Release* 和 *Debug* 二进制文件。在为其中一个构建后,使用 IDE 上的下拉菜单更改为另一个。
最后,您可以在 bin 目录中观察构建的二进制文件。
对于文档,您需要对 *doxygen* 项目发出显式构建命令才能获得 HTML 文档。它将调用 *Doxygen* 来完成所有繁重的工作。您可以在 `build/doc/doxygen/html` 中找到生成的文档。
要将您在自己的项目中使用的头文件和二进制文件收集到一个单独的目录中(类似于预构建二进制文件的方式),您需要显式构建 *Install* 项目。
这将在 *Build* 目录中创建一个 *Install* 目录,将所有构建的二进制文件收集到一个位置。只有在构建了 *Release* 和 *Debug* 版本后才使用此方法。
要测试您的构建,只需进入 `Build/bin/Debug` 或 `Build/bin/Release` 目录并启动几个应用程序,例如 *contours.exe*。如果它们运行,则表示您已完成。否则,肯定出了大问题。在这种情况下,您应该在我们的 问答论坛 联系我们。如果一切正常,*contours.exe* 的输出应类似于下图(如果使用 Qt 支持构建)。
注意 如果您使用 GPU 模块(CUDA 库),请确保您也升级到 GPU 的最新驱动程序。包含 (或找不到) nvcuda.dll 中无效条目的错误消息大多是由旧的显卡驱动程序引起的。要测试 GPU(如果已构建),请运行 *performance_gpu.exe* 示例应用程序。
设置 OpenCV 环境变量并将其添加到系统路径
首先,我们设置一个环境变量以简化我们的工作。这将保存我们在项目中使用的 OpenCV 库的构建目录。启动命令窗口并输入:
setx OpenCV_DIR D:\OpenCV\build\x64\vc14 (建议用于 Visual Studio 2015 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc14 (建议用于 Visual Studio 2015 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc15 (建议用于 Visual Studio 2017 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc15 (建议用于 Visual Studio 2017 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc16 (建议用于 Visual Studio 2019 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc16 (建议用于 Visual Studio 2019 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc17 (建议用于 Visual Studio 2022 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc17 (建议用于 Visual Studio 2022 - 32 位 Windows)
此处,目录是您拥有 OpenCV 二进制文件(*提取* 或 *构建*)的位置。您可以拥有不同的平台(例如,x64 代替 x86)或编译器类型,因此请替换适当的值。在其中,您应该有两个名为 *lib* 和 *bin* 的文件夹。
如果您构建的是静态库,那么您就完成了。否则,您需要将bin 文件夹路径添加到系统路径中。这是因为您将以“动态链接库” (也称为DLL )的形式使用OpenCV库。其中存储了OpenCV库包含的所有算法和信息。操作系统只会按需在运行时加载它们。但是,要做到这一点,操作系统需要知道它们在哪里。系统PATH 包含一个文件夹列表,其中可以找到DLL。将OpenCV库路径添加到此路径中,操作系统就会知道在哪里查找它可能需要的OpenCV二进制文件。否则,您需要将使用的DLL复制到应用程序可执行文件(exe )旁边,以便操作系统找到它,如果您处理许多项目,这将非常令人不快。为此,请再次启动PathEditor 并添加以下新条目(右键单击应用程序以调出菜单)
将其保存到注册表中,您就完成了。如果您更改了构建目录的位置,或者想尝试使用不同的构建来测试您的应用程序,您只需通过命令窗口中的setx 命令更新OPENCV_DIR变量即可。
现在,您可以继续阅读“如何在Microsoft Visual Studio中使用OpenCV构建应用程序” 部分中的教程。在那里,您将了解如何在Microsoft Visual Studio IDE的帮助下,在您自己的项目中使用OpenCV库。