记录:VS2019+OpenCV4.7.0编译

一、准备

OpenCV官网提供了动态库的安装包,但是只有64位,而且没看到编译参数,如果需要32位或者静态链接还是得自己编译。

CMake:https://cmake.org/download/

Visual Studio:https://visualstudio.microsoft.com/zh-hans/downloads/

Visual Studio老版本:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 

OpenCV:https://github.com/opencv/opencv

OpenCV扩展: https://github.com/opencv/opencv_contrib

OpenCV和OpenCV扩展要下一样的版本,直接在Release列表里找同一个版本即可。 

未使用CUDA,略。

二、构建

先用CMake-gui工具生成VS的工程文件。

选择OpenCV源码路径,设置输出路径,然后点Configure:

记录:VS2019+OpenCV4.7.0编译_第1张图片

第一次Configure时需要设置编译器:

记录:VS2019+OpenCV4.7.0编译_第2张图片

然后是漫长的等待,他会自动下载一些第三方的依赖,我下了半天。也可以自己下载,如ffmpeg可以在github找opencv_3rdparty仓库,选择对应分支下载放到输出目录的3rdparty/ffmpeg中。

Configure结束后列表中会显示编译选项,我们修改后需要重新Configure一下。

常用的一些选项:

OPENCV_EXTRA_MODULES_PATH:指定到contrib扩展库路径下的modules目录

OPENCV_ENABLE_NONFREE:开启非免费功能,工作项目勿用

BUILD_opencv_world:将各个模块生成到一个world库文件中

BUILD_SHARED_LIBS:勾上为动态库,取消为静态库

BUILD_WITH_STATIC_CRT:勾上为/MT,取消为/MD

BUILD_WITH_DEBUG_INFO:生成调试符号文件

Qt安装版是/MD的动态链接,所以我选择一样的设置。之前遇到过别人VS2022静态编译的OpenCV我VS2019没法用,缺了VS2022的运行时库。

还有一些多余的设置,用不上可以搜索然后取消勾选,比如其它语言的绑定、测试等:

记录:VS2019+OpenCV4.7.0编译_第3张图片

记录:VS2019+OpenCV4.7.0编译_第4张图片

记录:VS2019+OpenCV4.7.0编译_第5张图片

设置好后重新Configure,没报错就点Generate生成VS工程,然后点Open打开工程。这个工程文件在上面我们设置的输出目录下。 

在VS中我们选择好Debug或者Relase,然后在CmakeTargets下的All_BUILD右键点击生成,生成完了再INSTALL右键点生成,就会在输出目录生成一个install文件夹。

记录:VS2019+OpenCV4.7.0编译_第6张图片

install文件夹里有库文件和头文件:

记录:VS2019+OpenCV4.7.0编译_第7张图片

我们先写个Demo测试一下。

三、使用

在VS中使用动态库要设置包含目录(VC++目录设置或者C++/常规设置)、库目录(VC++目录设置或者连接器/常规设置)和库文件。 记录:VS2019+OpenCV4.7.0编译_第8张图片

记录:VS2019+OpenCV4.7.0编译_第9张图片

记录:VS2019+OpenCV4.7.0编译_第10张图片

如果懒得把dll拷到exe或者工作目录下,可以设置调试环境变量:

PATH=XXXX;%PATH%

记录:VS2019+OpenCV4.7.0编译_第11张图片

测试代码:

// #include "opencv2/opencv.hpp"
cv::Mat canvas = cv::Mat::ones(cv::Size(200, 200), CV_8UC3);
cv::rectangle(canvas, cv::Rect(50,50,100,100), cv::Scalar(0, 0, 255), 2);
cv::imshow("canvas", canvas);
cv::waitKey(0);

运行效果:

记录:VS2019+OpenCV4.7.0编译_第12张图片

你可能感兴趣的:(OpenCV,OpenCV)