一、准备工作:
(1)在OpenCV官网下载3.4.2版本(注意选择Win pack),https://opencv.org/releases.html。
(2)下载Contrib模块,https://github.com/opencv/opencv_contrib/releases/tag/3.4.2(记住opencv是什么版本,contrib就下什么版本,必须对应否则编译会出问题)
(3)下载CMake,下载后直接安装即可。https://cmake.org/download/
二、编译生成
下载的OpenCV是一个exe格式的文件,点击以后解压到你自己指定的目录即可,解压出来的文件包含一个source目录和一个build目录,实际上build目录就是已经编译好的可以使用的包了,但是不包含contrib模块,而且是64位的,
下面我们开始编译完整的32位版本。
(1)打开Ccmake-gui.exe
(2)点击Browse Source选择你解压出来的OpenCV Source目录,点击Browse Build选择一个目录用来存放生成的工程文件(自己创建一个目录),
(3)点击Configure,选择VS 2013,然后点击Finsh,然后CMake开始生成工程,注意此过程会从网上下载ffmpeg和ippicv两个库,所以需要联网。
(4)编译选择:
1.如果你想编译成静态库,那么把BUILD_SHARED_LIBS的钩去掉,这样就不用每次发布程序都带一堆动态库。
2.如果你想减少库文件,可以勾选BUILD_opencv_world,这样很多库会集成到opencv_world342.lib,那么你每次新建工程就不需要填写一大堆库链接了,但是可能也会把很多没用到的库包含进来
增加程序体积,所以我没有勾选,还是保持原来的。
3.如果你已经下载了contrib模块,解压模块,然后设置OPENCV_EXTRA_MODULES_PATH指向contrib的modules目录。如果你没下载这个模块,就不用做这一步了,工程照样能够正常编译。
(5)开始生成
选择完毕再次点击configure按钮,执行完毕还有红字则继续点击configure直到全部变成白色,然后点击Generate。
看到Configuring done、Generating done就表示已经搞定了。
(6)编译工程
进入你创建的Build目录,用vs打开OpenCV.sln工程,找到INSTALL然后点击生成,编译的时候把360杀毒和什么安全卫士之类的关闭,我因为打开导致cmake出错,关闭后就完全正常了,接着等待编译完成就OK了。编译完成后切换到Release模式再次编译。
(7)测试
1.用VS2013创建一个控制台程序,点击工程名右键-属性-配置属性-VC++目录,
打开包含目录,添加include,include/opencv,include/opencv2三个目录
2.添加库目录:install\x86\vc12\staticlib
3.点击配置属性-链接器-输入,选择附加依赖项,添加需要的库文件。DEBUG模式的都是*d.lib,RELEASE的是*.lib,根据自己项目引用到的模块来添加,我这里
需要添加的库有:
ippicvmt.lib
IlmImfd.lib
ippiwd.lib
ittnotifyd.lib
libjasperd.lib
libtiffd.lib
libwebpd.lib
libjpeg-turbod.lib
libpngd.lib
opencv_core342d.lib
opencv_highgui342d.lib
opencv_imgcodecs342d.lib
opencv_imgproc342d.lib
zlibd.lib
4.编写代码
1 #include "stdafx.h" 2 #include <opencv2/opencv.hpp> 3 #include <opencv2/highgui.hpp> 4 5 using namespace cv; 6 7 int _tmain(int argc, _TCHAR* argv[]) 8 { 9 Mat mat; 10 mat = imread("home.jpg",CV_LOAD_IMAGE_UNCHANGED); 11 if (mat.empty()) 12 return -1; 13 imshow("MyWindow", mat); 14 waitKey(0); 15 destroyWindow("MyWindow"); 16 return 0; 17 }
5.运行程序