1、 配置OpenCV环境变量

计算机->(右键)属性,出现如图1所示界面

OpenCV VTK VS2008编译 vs2010 opencv3.4.1_属性页

单击“高级系统设置”,选中高级(标签)出现如图2所示界面


OpenCV VTK VS2008编译 vs2010 opencv3.4.1_ide_02


单击右下方的“环境变量”,弹出如图3所示界面,注意这里最好用户变量和系统变量都设置一下


OpenCV VTK VS2008编译 vs2010 opencv3.4.1_ide_03


选中path,单击下方“编辑”按钮


OpenCV VTK VS2008编译 vs2010 opencv3.4.1_OpenCV VTK VS2008编译_04


在变量值里面添加” …\build\x86\vc10\bin”(里面的…为自己的opencv路径。例如我的: D:\ProgramFiles \opencv\build\x86\vc10\bin; 

2、 配置VS2010环境

大家在使用opencv的时候肯定会面对这样一个问题:根据官网以及大多数教程提供的方法中,似乎每一次新建一个opencv的新项目以后都需要重新再配置“VC++目录”中的“包含目录”和“库目录”;以及“链接器”中的“附加依赖项”。这给我们造成了很多的不便,大家都希望寻找一种只需要配置一次opencv环境的方法,下面我就给大家介绍一种简单的方法:

 

VS2010中传统配置opencv环境是通过设置项目中的“属性”来完成的。如图5:

OpenCV VTK VS2008编译 vs2010 opencv3.4.1_OpenCV VTK VS2008编译_05

这里就是我们看到的每次都需要进行opencv配置的界面。

 

这并不是我们所用的配置环境,在这里我们的配置过程如下:首先确保已经打开一个C++的工程,在IDE中,打开视图->属性管理器(有的是视图->其它窗口->属性管理器,没有什么区别)。展开树形后,你会发现一个名为“Microsoft.Cpp.Win32.user”的项目,如图6:


OpenCV VTK VS2008编译 vs2010 opencv3.4.1_OpenCV VTK VS2008编译_06


右击并点击“属性”后,你会看到一个和工程属性页类似的属性设置框”Microsoft.Cpp.Win32.user属性页”。如图7:


OpenCV VTK VS2008编译 vs2010 opencv3.4.1_OpenCV VTK VS2008编译_07


在以上的属性页中,我们就按照opencv配置的过程进行配置:

0. 选择“VC++目录”选项;
 
0. 将” …\opencv\build\include;…\opencv\build\include\opencv;…\opencv\build\include\opencv2”,添加到包含目录;(”…\”表示opencv安装目录)
 
0. 将”…\opencv\build\x86\vc10\lib”,添加到库目录;
1. 打开连接器->输入->附加依赖项;
将所需的库文件添加到附加依赖项中去:
对于Debug配置需要添加如下库(我的版本号是2.4.0,并且把所有的库都添加进去了,大家可以视情况而定)
 
opencv_calib3d246d.lib;opencv_contrib246d.lib;opencv_core246d.lib;
opencv_features2d246d.lib;opencv_flann246d.lib;opencv_gpu246d.lib;
opencv_haartraining_engined.lib;opencv_highgui246d.lib;
opencv_imgproc246d.lib;opencv_legacy246d.lib;opencv_ml246d.lib;
opencv_nonfree246d.lib;opencv_objdetect246d.lib;
opencv_photo246d.lib;opencv_stitching246d.lib;opencv_ts246d.lib;
opencv_video246d.lib;opencv_videostab246d.lib;
 
如果是release配置,则添加:
opencv_calib3d246.lib;opencv_contrib246.lib;opencv_core246.lib;
opencv_features2d246.lib;opencv_flann246.lib;opencv_gpu246.lib;
opencv_haartraining_engine.lib;opencv_highgui246.lib;
opencv_imgproc246.lib;opencv_legacy246.lib;opencv_ml246.lib;
opencv_nonfree246.lib;opencv_objdetect246.lib;
opencv_photo246.lib;opencv_stitching246.lib;opencv_ts246.lib;
opencv_video246.lib;opencv_videostab246.lib;
最后点击“确定”就Ok啦!
 

3、 用VS2010新建控制台工程测试:
这里就不详细说了,大家可以新建个空项目,添加C++文件,文件中输入一下代码:

 #include <iostream> 

 #include <opencv/highgui.h>  

 using namespace std; 


 int main() 

 {  

            IplImage* img = cvLoadImage("test.jpg" );  

            if(!img) 

            { 

                       printf("error"); 

            } 

            cvNamedWindow("OpenCV", CV_WINDOW_AUTOSIZE );  

            cvShowImage("OpenCV", img );  

            cvWaitKey(0);  

            cvReleaseImage(&img );  

            cvDestroyWindow("OpenCV" );  

            return 0; 

 }

点击保存,然后编译运行,会出现图像。注意图片要放到项目文件下的具体工程文件夹下。

如果编译或者运行出错

1如果提示找不到cv.lib:

从网上下载opencv1.0.然后把里面的lib文件夹复制到你的opencv文件夹下;

然后以VS2010为例,在这个解决方案右键--属性--连接器--常规--设置附加库---添加这个路径.

2如果提示找不到libgsl.lib,libgslcblas.lib:

这是因为VS调用了GSL库,GNU Scientific Library (GSL)是一个开源的科学计算的函数库,里面有大量的数学计算 函数,非常强大:  

在  http://gnuwin32.sourceforge.net/packages/gsl.htm 页面下载 
    Complete package, except sources   Setup 以及 
    Sources                            Setup  分别进行安装 
在目录D:\Program Files\GnuWin32\src\gsl\ 1.8\gsl-1.8\VC8 ,用VS2010 打开libgsl.sln 文件,在资源管理器中可以看到四个工程,然后F7编译。

把gsl的lib文件夹下的libgsl.lib,libgslcblas.lib这两个考到vs2010,vc的lib目录下,如果打开gsl的lib目录并没有libgsl.lib,libgslcblas.lib这两个文件。

解决办法在网上找了下就是:



打开vs2010的命令提示框,进入gsl库的lib目录下依次输入一下两条语句:
lib /machine:i386 /def:libgsl.def
lib /machine:i386 /def:libgslcblas.def
在看lib目录下,有了libgsl.lib,libgslcblas.lib这两个文件,拷贝到vs2010目录下,就完成了。

 

3错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
在电脑里面搜索发现

C:\Program Files\Microsoft Visual Studio 
 10.0\VC\bin

 C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7600.16385_none_ba476986f05abc65

 C:\Windows\Microsoft.NET\Framework\v4.0.30319



这三个路径里面都有cvtres.exe文件,尝试使用第二个路径里面的文件替换第一个路径的文件,问题解决。

(这个问题是windows自动更新造成编译器cvtres.exe的版本过低,如果windows再次更新,则还可能出现这样的问题,届时再重复一下上述步骤即可。)