小白编译 | VS2015+opencv4.2.0+CMake编译

1 篇文章 0 订阅
1 篇文章 0 订阅

1 下载并安装VS2015、CMake及下载opencv4.2.0+opencv4.2.0contrib

Visual Studio 2015可移步官方网站下载社区版:Visual Studio下载地址
CMake下载地址:CMake官网下载
至于opencv4.2.0+opencv4.2.0contrib,可使用我已上传的版本:opencv4.2.0+contrib+缺省dlls.zip
该压缩包已经内置了缺失的一些库如ffmpeg(在opencv4.2.0/opencv/sources/.cache文件夹下),CMake过程中不会因为缺失dll而出错,也不会因为无法下载dll(网络问题)而出错,极大地减少了编译的时间成本(不然cmake通不过真的很痛苦,亲身体验)。
contrib:由于有些模块在opencv中不再提供,因此被官方分离出来,形成了特别的contrib库。但是这部分库通过CMake可以与opencv4.2.0一起编译。

2 怎么编译

CMake是什么

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。在此次安装过程中,主要使用的是windows上的CMake图形界面,在操作CMake的过程中,我们可以选择opencv的相关编译选项,进而生成可以使用Visual Studio不同版本和平台的可以编译的工程文件。
CMake界面如下:
CMake界面

使用CMake生成可编译的工程文件

Where is source code:源代码目录,也就是 你的目录/opencv4.2.0/opencv/sources;
where to build binarys:最终VS项目编译出的dll存放的路径,由你来指定,最好自己新建一个文件夹作为路径。该文件夹下就是我们最终需要用到的库目录及dll等内容。
然后点击configure,选择VS2015及相应的软件架构。一般来说,默认是win32位架构,但是32位机器已经较为少见,建议选择64位架构(x64):
选择VS版本及架构
点击Finish(结束),观察输出框中有没有红色的warning(警告)或者error(错误):
最下面的输出框没有错误的情况
那么如何将contrib内容加入到编译过程中来呢?
在搜索框中输入extra,将之前解压的opencv4.2.0_contrib的路径加入进来,就可以。该路径的具体内容为你的目录/opencv4.2.0_contrib/sources/opencv_contrib-4.2.0/modules
三项内容的路径

然后,剩下来就是自定义环节了。比如,我不需要生成opencv的java版本,我就在搜索框中输入java,并将BUILD_JAVA的默认勾选去掉。不需要python也同理。当然,为了减少Visual Studio编译的时间,也可以搜索test并将这些含有test的测试项的勾选都去除。
不需要的话就不选java
再次点击configue, 观察输出区有没有红色警告或者错误。没有的话,点击Generate(生成),即可生成VS工程文件。生成文件后,点击Open Project(打开工程),即可查看生成的工程文件。

使用Visual Studio编译工程文件,生成可使用的库和dll

打开工程后,先确定要生成的版本与之前CMake选择的架构一致,如果之前选择x64,这里对应x64,而如果之前选择的是win32,这里对应x86:
是x64还是x86要与之前的选择一致
至于debug还是release,则看自己需要。这里选择debug。
之后进入解决方案资源管理器,找到CMakeTargets->ALL_BUILD,右键选择生成,就可以开始等待了。等待的时间取决于电脑配置,快者10到20分钟,慢者可达一小时至几小时不等,还是要耐心。
生成ALL_BUILD
如果上述过程没有问题的话,再次找到CMakeTargets->INSTALL,右键选择生成,即可大功告成了。

3 CMake出错了…

3.1 缺失ffmpeg等dll

如果不使用我给的库,而使用官方给的库,就会出现这些问题:

CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  FFMPEG: Download failed: 6;"Couldn't resolve host name"

  For details please refer to the download log file:

  D:/opencv/bulid_mingw/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
  modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
  modules/videoio/cmake/init.cmake:3 (include)
  modules/videoio/cmake/init.cmake:22 (add_backend)
  cmake/OpenCVModule.cmake:312 (include)
  cmake/OpenCVModule.cmake:375 (_add_modules_1)
  modules/CMakeLists.txt:7 (ocv_glob_modules)

该问题是因为这些文件本就是缺失的,cmake会找到相应的网站去下载,而该网站下载速度非常慢,慢到令人没脾气。而我的库文件已经把这些内容全部放在对应位置了,CMake就不会再去下载。你也可以自己去找这些缺失的dll,然后放在opencv4.2.0/sources/.cache文件夹下。

3.2 关于setupvars的警告提示

CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory
两种方法:
1 坐视不理。对程序编译无影响。
2 关闭该选项。在CMake中搜索OPENCV_GENERATE_SETUPVARS,并取消默认勾选。

3.3 VS编译后提示关于hdf的库出现问题

在CMake中搜索hdf,取消相关勾选,就不会用到hdf了。

3.4 还有其他问题

由于本人机器配置有限,不同机器上可能出现的问题不尽相同。因此,其他问题请善用搜索,一定会有和你相同问题的朋友哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用CMake构建OpenCV 4.2.0的过程,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了CMake工具。如果没有安装,请前往CMake官方网站(https://cmake.org/)下载并安装适合你操作系统的版本。 2. 接下来,下载OpenCV 4.2.0的源代码。你可以从OpenCV官方网站(https://opencv.org/releases/)或者GitHub的OpenCV(https://github.com/opencv/opencv/releases)上获取源代码。 3. 解压源代码文件,并进入解压后的文件夹。 4. 在源代码文件夹中创建一个名为"build"的子文件夹,用于存放编译生成的文件。 5. 进入"build"文件夹,并在终端中执行以下命令: ``` cmake .. ``` 这将使用CMake生成Makefile,用于后续的编译过程。在执行该命令之前,确保你已经进入到了"build"文件夹中。 6. CMake将会根据你的系统环境和配置选项生成Makefile。一旦生成完成,你可以使用以下命令进行编译: ``` make ``` 7. 编译过程可能需要一些时间,具体取决于你的系统配置。等待编译完成后,你可以使用以下命令进行安装: ``` sudo make install ``` 这将安装OpenCV到你的系统中。 请注意,以上步骤仅适用于Linux和macOS系统。如果你使用的是Windows系统,可以考虑使用CMake GUI来生成Visual Studio项目,然后使用Visual Studio进行编译和安装。 希望这些步骤对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值