关于OpenCV配置vs软件的心得
在这之前我先介绍一下VS的版本,vc10表示是VS2010,vc11表示VS2012,vc12表示VS2013.
1.opencv下载与安装
首先你可以到opencv的官方网站下载(免费的),opencv的版本很多,可以找一个网络上配置教程比较多的版本,因为这样方便你解决问题。还有一个问题,那就是从官网下的opencv只支持vc11/vc12,那样你可以选择别的,比如opencv2.4.10可以支持vc10/vc11/vc12,opencv2.4.12支持vc11/vc12了。因为不喜欢vs12的风格,我还是坚持用vs10了。
opencv下载官网:http://opencv.org/
下载后直接解压到你想安装的盘,解压即安装,点击Extract解压。解压后大概是一个3Gb左右的文件。
2.opencv的Windows环境变量配置
首先右击桌面上的“计算机”,选“属性”,然后选择“高级系统设置”。
接着点击“环境变量”进入。
在这里,可以先在“用户变量”这里先新建一个OPENCV的变量。这里是为了使后面的设置简单点。变量值是你安装的路径,按照自己的路径更改即可。
变量名:OPENCV
变量值:D:\opencv2.4.10\opencv\build
然后,在“系统变量”里找到“path”这个变量,点击编辑,然后在最后加上这句: ;%OPENCV%\build\x64\vc10\bin 注意分号是必须的,用于隔开路径。
这样我们就把Windows环境变量设置好了。
3.配置vs2010
这里教一种一次配置永久使用的方法。
3.1建立C++工程
第一步,打开VS2010,新建一个C++的工程。点击“文件”->“Win32控制台应用程序”,填写工程的名称,选择保存路径。
然后点击“下一步”。
然后,选中“空项目”,再点完成。这样C++工程建立完毕。
再建一个C++程序
3.2设置属性管理文件
3.2.1在"Debug|Win32" 创建“OpencvDebugeconfig”配置文件
第二步,点击“属性管理器”,我们要在"Debug|Win32"和"Release|Win32"添加一个配置文件。
右击“Debug|Win32”,点击“添加新项目属性表”。命名为“OpencvDebugeconfig”,然后点击添加
然后选择“OpencvDebugeconfig”文件,点击“属性”进行设置
选择“VC++目录”->分别在“包含目录”和“库目录”设置如下:
包含目录:添加3个路径:
D:\opencv2.4.10\opencv\build\include
D:\opencv2.4.10\opencv\build\include\opencv2
D:\opencv2.4.10\opencv\build\include\opencv
库目录:添加1个路径:
D:\opencv2.4.10\opencv\build\x86\vc10\lib
然后在“链接器”->“输入”->“附加依赖项”中输入如下:
至此,“Debug|Win32”里的“OpencvDebugeconfig”就设置完全了。
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
3.2.1在"Release|Win32" 创建“OpencvReleaseconfig”配置文件
同创建“OpencvDebugeconfig”的方法创建“OpencvReleaseconfig”属性,“OpencvReleaseconfig”中的“包含目录”和 “库目录”和“OpencvDebugeconfig”一样。
如下:
选择“VC++目录”->分别在“包含目录”和“库目录”设置如下:
包含目录:添加3个路径:
D:\opencv2.4.10\opencv\build\include
D:\opencv2.4.10\opencv\build\include\opencv2
D:\opencv2.4.10\opencv\build\include\opencv
库目录:添加1个路径:
D:\opencv2.4.10\opencv\build\x86\vc10\lib
注意,“OpencvReleaseconfig”配置文件在“链接器”->“输入”->“附加依赖项”中输入如下:
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
然后保存“OpencvDebugeconfig” 和“OpencvReleaseconfig”配置文件,
这样设置就全部完成了。
4.程序测试
测试程序,在C++程序中写如下:
#include <iostream>
#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img=imread("pic.jpg");//读入一张图片
namedWindow("Test"); //创建一个名为Test窗口
imshow("Test",img); //窗口中显示图像
waitKey(5000); //等待5000ms后窗口自动关闭
}
5.我遇到的问题
1.>LINK : fatal error LNK1123:转换到 COFF期间失败:文件无效或损坏
我使用了方法二。
问题说明:
当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。
l当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。
l当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。
解决方案:
参考:
http://*.com/questions/10888391/link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-invalid-or-c
因为是cvtres.exe版本错误导致的结果,所以凡是能使VS链接器找到正确的cvtres.exe版本的方法都可以解决该问题。或者使VS链接器不生成COFF的方法都可以。
【方法一】
当前系统中存在两个cvtres.exe文件,版本不同。让VS2010使用.NET 4.5的cvtres.exe程序。
具体步骤:
重命名或删除:(vs2010安装的位置)C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\bin\cvtres.exe
这样C:\Windows\Microsoft.NET\Framework\v4.0.30319(.NET 4.5)中的cvtres.exe文件就可以被VS2010使用。
【方法二】
解决方法如下:
项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。
说明:这种方法每个工程均需要修改配置。
【方法三】
安装:VS2010 SP1. 该版本应该是能使用.NET 4.5的,并配有正确的cvtres.exe版本。
注意:安装VS 2010 SP1 时会移除64-bit 编译器. 通过安装 VS 2010 SP1 compiler pack 能够重新获得。
【方法四】
卸载.NET 4.5,重装.NET 4.0
2. 在Windows文件夹下加入OpenCV动态链接库的问题
这一步是各种介绍OpenCV的配置的相关博文中都没写出来的。根据这些博文配置出来的环境,在运行基于OpenCV的程序的时候,往往会得到这样类似的结果:
这种问题最简单粗暴的方法,是把相关的dll都拷贝到Windows操作系统的目录下。如果你的Windows安装在C盘,那么路径就是C:\Windows。按照之前我的OpenCV的存放环境,这些dll存放在
D:\Program Files\opencv\build\x86\vc10\bin目录下。
到这个目录下,【Alt+A】全选,【Alt+C】拷贝,然后转到C:\Windows下面,【Alt+V】复制,简单粗暴地就完成了。
恩,环境配置大功告成,我们来测试一下成果吧~
6.参考网页资料
【1】【OpenCV入门教程之一】OpenCV 2.4.8 +VS2010的开发环境配置:
http://blog.csdn.net/huang9012/article/details/21811129
【2】Visual Studio2010配置Opencv2.4.9:
http://www.cnblogs.com/woshitianma/p/3853447.html
【3】Windows7+VS2010下OpenCV环境配置:
http://johnhany.net/2013/11/environment-for-opencv-with-vs2010/
【4】vs2010 问题 >LINK :fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏:
http://www.cnblogs.com/newpanderking/articles/3372969.html
【5】OpenCV学习-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)
http://blog.csdn.net/lysc_forever/article/details/24272595