Visual Studio编译opencv源码

参考:

Windows 下使用 CMake + Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块-腾讯云开发者社区-腾讯云

https://zhuanlan.zhihu.com/p/620479751

环境:

Visual Studio 2022+opencv8.1源码+cmake3.29

Visual Studio 官网下载即可:

Visual Studio 2022 IDE - 适用于软件开发人员的编程工具

opencv8.1源码:

OpenCV 4.8.1 源码包 https://github.com/opencv/opencv/releases/tag/4.8.1

OpenCV 4.8.1 扩展模块源码包 https://github.com/opencv/opencv_contrib/releases/tag/4.8.1

cmake:

CMake - Upgrade Your Software Build System

开始:

创建一个build目录存放编译产生的目标文件(opencvbuild481)

打开cmake-gui.exe,配置源代码和目标存放路径(此展示我个人的路径,实际情况需修改)

E:\CompileInterpreter\opencv\opencv-4.8.1

E:\CompileInterpreter\opencv\opencvbuild481

点击左下角Configure,配置编译器。编译器选择你的Visual Studio,下面四个选择Use default native compilers即可 。最后点击Finish

"Configure done"完成后,会出现这个界面

(1) BUILDopencvworld 勾选 BUILDopencvworld:此项的目的是生成一个dll文件

(2)OPENCVEXTRAMODULESPATH 设置OPENCVEXTRAMODULESPATH:设置contrib模块的目录:(注意一定到modules这个目录)

例如我:

E:\CompileInterpreter\opencv\opencv_contrib-4.8.1\modules

(3)OPENCVGENERATESETUPVARS

去除勾选, 否则有可能会导致一个CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message) CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory报错

(4)关于java的根据需要可以去留

最后点击Generate,开始校验和下载生成文件

这一段时间可能会消耗很久,因为会下载一些文件,这些文件需要科学上网(但事实上,我开了vpn,大多也下载失败)。此下载结果大多都会失败,所以需要我们手动下载,手动下载参考此链接:

Windows 10下,OpenCV4 与 contribute 一起编译,第三方库无法下载的解决方案_ippicv: download failed: 28;"timeout was reached-CSDN博客

Generate完成后,如果你是天选之人,就该和我下面的图一样,标记的两个框中没有一点红色,如果下面那个日志框中存在红色日志记录,那必须网上查找问题解决方案,修复后重新Generate,直至没有红色日志为止,否则最后的编译环节就会报很多错

报错专栏:

1、CMake Warning (dev) at cmake/OpenCVUtils.cmake:144 (find_package):

Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules

are removed. Run "cmake --help-policy CMP0148" for policy details. Use

the cmake_policy command to set the policy and suppress this warning.

源码路径E:\CompileInterpreter\opencv\opencv-4.8.1\cmake下有个OpenCVUtils.cmake文件,在此文件第一行添加下面代码保存重新Generate

if(POLICY CMP0148)

cmake_policy(SET CMP0148 OLD)

endif()

2、CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:175 (message): OpenCV does not recognize MSVCVERSION "1942". Cannot set OpenCVRUNTIME Call Stack (most recent call first): CMakeLists.txt:153 (include)

此问题是配置代码中,MSCVER未及时更新对应vs版本,同样在源码路径E:\CompileInterpreter\opencv\opencv-4.8.1\cmake下有个OpenCVDetectCXXCompiler.cmake文件,定位到“OpenCV does not recognize MSVCVERSION”,将下面代码添加进去即可

elseif(MSVC_VERSION MATCHES "^194[0-9]$")

set(OpenCV_RUNTIME vc17)

3、CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message) CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory

OPENCVGENERATESETUPVARS去勾选掉即可

4、ippicv、ffmpeg等文件下载失败问题

手动下载:

在你的目标文件夹下有个CMakeDownloadLog.txt文件,该文件记录了Generate过程中下载文件的日志,我们根据此日志找到要下载文件的链接,copy后网页上手动下载,下载过后,放进日志中cmake_download后面对应的路径中,该路径中存在一个0kb或者不完整的文件,文件类型和你刚网页上手动下载的一样,我们将它名字复制下并删除它,把复制的名字重命名给我们手动下载的文件,就完成手动下载文件的整个流程了。

5、Visual Studio编译报错问题

(1)异常编码的报错问题

“Beta版:使用Unicode UTF-8提供的全球语言支持(U)”勾选上

(2)找不到python311d.dll文件

这个暂时未找到问题解决方法,但如果不使用python,可以直接跳过不用管,后面install也不会出问题

全部都没问题后点击Open Project,因为我们是用Visual Studio的MSVC编译,所以点击后会直接打开Visual Studio,编译流程如下:

选择编译版本(Debug和Release两个版本都需要编译):

选择生成,点击生成中的“生成解决方案”,开始编译。此过程耗费时间教程,和cpu性能有关,大致20min~50min

最后编译后没有错误,即可点击“仅生成INSTALL”选项,安装编译好的动态库文件

INSTALL完成没问题后,我们就会在install\x64\vcxx\lib下面找到这两个文件,其中

opencv_world481.lib对应的Release版本

opencv_world481d.lib对应的Debug版本

如果发现少了一个文件,就需要你在上面的编译版本步骤选择对应的版本,继续对应的步骤执行编译

最后编译安装好的opencv配置进Visual Studio参考:

如何在Visual Studio 2022中配置OpenCV环境-CSDN博客

注意:

选择Debug版本后,连接器 →输入→附加依耐项添加:opencv_world481d.lib

选择Release版本后,连接器 →输入→附加依耐项添加:opencv_world481.lib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值