作为一个opencv的入门的小白来说,要学会如何如何去编译opencv。
当然在windows使用mingw-w64编译opencv会遇到一些坑。
不过我们所遇到的坑,必定有前辈遇到过这种相同的问题,所以今天我就来说一下
如何使用开源的mingw-w64来编译opencv
编译环境
mingw版本:mingw-w64 5.4.0 (64 bit)
CMAKE : cmake 3.11.4 (64 bit)
opencv : 3.4.4
(我也编译过4.0.0虽然也成功了,不过由于其使用的时候必须使用c++11来开发,所以我就放弃了,改用了3.4.4)
编译过程:
Step 1:
配置相应的编译环境,从MinGW-w64 - for 32 and 64 bit Windows 这个网站你可以下载适合你自己的mingw-w64的版本。下载好之后为mingw-w64配置环境变量。我将下载好的mingw x86_64-5.4.0-release-posix-sjlj-rt-v5-rev0.7z
也就是第一个,解压到了d盘下MinGW目录下,所以我在我的电脑上的配置环境为
环境变量为D:\MinGW\mingw\bin
如果配置好了,可以验证一下,如果在dos下输入gcc -v出现
则说明配置完成
Step2.
配置好gcc开发环境之后,你也可以使用gcc开发c程序或者c++程序。我们的目的是为了编译opencv这个计算机视觉库。所以第二步,配置cmake,你可以直接从 https://cmake.org/download/ 这个网址直接下载相应的cmake工具,然后安装。安装的时候将cmake添加进环境变量。
Step3
将下载好的opencv3.4.4和opencv_contrib3.4.4解压。为了方便我将它们放在了同一个文件夹下,然后启动cmake-gui
我将opencv放在了F盘,为了方便寻找我就在F盘新建了一个文件夹,source code 选择opencv-3.4.4,输出路径为F:/opencv/build
然后点击 configure
点击yes
选择mingw makefiles。点击finnish,中间要下载一些东西,所以要保证有网络,有可能需要翻墙才能configure完成。
其中 不勾选
1 | ENABLE_PRECOMPILED_HEADERS |
这一栏是配置opencv_contrib的modules。
勾选
1 | ENABLE_CXX11 |
除了配置以上的之外还要修改一些源代码
在opencv-3.4.4中的
modules/videoio/src/cap_dshow.cpp中的
1 |
上一行添加
1 | #define NO_DSHOW_STRSAFE |
即:
然后configure ,完成之后,执行generate
generate完成之后就可以进行第四步。
Step4
在build目录下打开Dos窗口
输入
1 | mingw32-make |
如果想加速编译可以在
1 | mingw32-make -j 4 |
等到编译完成100%(根据自己的电脑性能选择线程)我选择12是为了加速编译
你可以在编译的时候看会书,估计要1个小时
就可以使用
1 | mingw32-make install |
直到安装完成
这样opencv库就编译完成,你可以在build文件夹中找到install这个文件夹,
我将install文件夹移动到了D盘下的MinGW文件下,然后配置相应的环境变量,以便于cmake工具能够找到opencv这个库(我个人的配置)
新建一个变量
点击确定,然后编辑PATH变量
添加一项,因为我的是64位所以就是x64,如果是32位则其中x64换成x86
1 | %OpenCV_DIR%\x64\mingw\bin |
就可以使用cmake,和mingw来开发opencv应用程序了
在编译的时候可能会遇到其他vs_version.rc.obj无法生成的问题
根据自己的编译目录手动生成 vs_version.rc.obj
1 | windres E:\opencv\build\modules\core\vs_version.rc -O coff E:\opencv\build\modules\core\CMa |