简述
opencv3.4.3版本中只有vc14和vc15,且是64位,而并没有vs2013对应的vc12。这并不代表vs2013中就不可以使用opencv3.4.3,这种方式就是重新编译opencv3.4.3对应的vs2013版本。【注:opencv3的其他版本也适用这种方式】
环境
windows / vs2013 / opencv3.4.3
步骤
1、下载CMake;链接
2、下载opencv3.4.3 Sources版本; 官网链接
3、 解压opencv-3.4.3.zip,解压目录为opencv-3.4.3 。然后手动新建Build目录,即重新编译后的目录。这里我创建了两个目录,“opencv3.4.3-vs2013-64”是64位的,“opencv3.4.3-vs2013-x86”是32位的。
4、安装CMake,并打开CMake。选择源目录 和 目标目录。
其中,源目录指解压后的opencv3.4.3,目标目录指新建的Build目录,“opencv3.4.3-vs2013-64”或“opencv3.4.3-vs2013-x86”目录,这需要根据你想要编译32位还是64位而定。
5、点击Configure按钮后,会出现下述界面。选择你所需要的编译器和解决方案版本。这里我们用的是vs2013,其中“Visual Studio 12 2013”指编译成32位的,“Visual Studio 12 2013 Win64”指编译成64位的,根据需要而选择。选择后点击“Finish”,开始下载相应函数库,此过程需要等好长一段时间。
6、第一次Configure完成后,会出现红色部分。这是为了让用户可以手动补充相应函数库,如TBB、CUDA、Eigen等,这里视你的需求而定,若需要其他库,请自行下载相应库,并自行配置库的include和lib。如果无需CUDA版本,可将WITH_CUDA的选项取消。然后再一次Configure(一般共需要两次Configure),等待一会,就会看到configuring done信息提示,表示配置成功。
7、点击“Generate”,生成opencv解决方案。当出现Generating done的提示,即表明解决方案生成成功。
8、点击“Open Project”。此时CMake会自行启动Visual studio 2013,打开上述生成的解决方案。
9、Build ---> Install 解决方案
(1)Debug模式:
先将解决方案修改为Debug模式,然后右击All_BUILD,选择生成(此过程需要一段时间)。生成成功后,右击INSTALL,选择生成,生成成功后,会在“opencv3.4.3-vs2013-x86”或“opencv3.4.3-vs2013-x64”目录中生成“install”目录,里面就是我们所需要的。
(2)Release模式:
步骤与Debug模式一样,首先将解决方案修改为Release,其他步骤与Debug模式的一样。
10、至此,opencv3.4.3对应的vs2013版本就重新编译完成了。
配置与实例
1、使用之前需要配置环境变量。将bin目录添加到系统环境变量path中,这里我的目录为“D:\opencv3.4.3-vs2013\opencv3.4.3-vs2013-x86\install\x86\vc12\bin”。同理,如果是64位的,就是x64下bin的路径。(配置opencv环境变量的方式,网上有很多,这里不介绍了)。bin目录中包含很多dll文件,其中带d的表示Debug版,不带d的表示Release版。
2、创建新的项目,配置opencv3.4.3
(1)包含目录
D:\opencv3.4.3-vs2013\opencv3.4.3-vs2013-x86\install\include
D:\opencv3.4.3-vs2013\opencv3.4.3-vs2013-x86\install\include\opencv
D:\opencv3.4.3-vs2013\opencv3.4.3-vs2013-x86\install\include\opencv2
(2)库目录
D:\opencv3.4.3-vs2013\opencv3.4.3-vs2013-x86\install\x86\vc12\lib
(3)附加依赖项
Debug模式附加依赖项:
opencv_calib3d343d.lib
opencv_core343d.lib
opencv_dnn343d.lib
opencv_features2d343d.lib
opencv_flann343d.lib
opencv_highgui343d.lib
opencv_imgcodecs343d.lib
opencv_imgproc343d.lib
opencv_ml343d.lib
opencv_objdetect343d.lib
opencv_photo343d.lib
opencv_shape343d.lib
opencv_stitching343d.lib
opencv_superres343d.lib
opencv_video343d.lib
opencv_videoio343d.lib
opencv_videostab343d.lib
Release模式附加依赖项:
opencv_calib3d343.lib
opencv_core343.lib
opencv_dnn343.lib
opencv_features2d343.lib
opencv_flann343.lib
opencv_highgui343.lib
opencv_imgcodecs343.lib
opencv_imgproc343.lib
opencv_ml343.lib
opencv_objdetect343.lib
opencv_photo343.lib
opencv_shape343.lib
opencv_stitching343.lib
opencv_superres343.lib
opencv_video343.lib
opencv_videoio343.lib
opencv_videostab343.lib
3、需要注意一点,如果配置的是x86版本,那么项目只能在win32环境下运行, 如果配置的是x64版本,那么项目只能在x64环境下运行。
4、项目运行时,如果出现“无法启动此程序,因为计算机中丢失opencv_cored343.dll”等类似错误提示,是因为你配置得环境变量没有生效,重启电脑后,再次运行程序就不会再出现这个问题了。我在网上查了这个问题,很多人的解决方式是,在opencv中找到缺少的dll,拷贝到C:\Windows\System32目录下即可。这种方式也是可以的,不过我们之前配置opencv环境变量,目的就是为了不走这一步。(下面的图是从别人博客里拷贝来的,哈哈哈)
5、以上就已经可以正常使用重新编译的opencv3.4.3了。但是 重新编译的目录“opencv3.4.3-vs2013-x86”占近6.63G内存,非常大,其实我们需要的只是"install"这一个文件目录就可以了,其他的所有文件都是源码,可以删除,不影响正常使用。而“install”目录只有229M内存,很小了。
删除之前:
删除之后:
总结
多尝试新的东西很有意思,自己编译的库,真香!