Opecv 2.1 + VS 2005配置成功

来源:互联网 发布:达内 培训学校php培训 编辑:程序博客网 时间:2024/05/22 00:44

今天突然来劲要安装一下OpenCV(其实已经好长时间没有应用了,记得以前用还是1.0的版本,没有想到现在2.2都出来了)。当前最新的是OpenCV 2.2,但相应的文档似乎还少一些,因此比较下来决定装一下OpenCV 2.1,估计两者差距应该不是很大。

 

从网上下载了OpenCV-2.1.0-win32-vs2008.exe,这个程序是在VS2008下编译过的,包含了必须的lib和dll文件,感觉直接用起来简单些,需要说明的是我的机器上安装的是VS 2005,暂时没有升级的打算,这也就为接下来的工作买下了隐患。

 

第一步安装流程参考http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010

1.1 安装OpenCV-2.1.0-win32-vs2008.exe

1.2 安装成功生成了lib,bin和include文件夹,一切看起来都很正常。看来可以避免自己编译OpenCV了(?)

  • Configure Project Directories
    • In 2008
      • Tools -> Options -> Projects and Solutions -> VC++ Directories

    • In 2010
      • Project -> OpenCV_Helloworld Properties...Configuration Properties -> VC++ Directories

    • Include Directories... add: 'C:/OpenCV2.1/include/opencv;'
    • Library Directories... add: 'C:/OpenCV2.1/lib;'
    • Source Directories... add: 'C:/OpenCV2.1/src/cv; C:/OpenCV2.1/src/cvaux; C:/OpenCV2.1/src/cxcore; C:/OpenCV2.1/src/highgui; C:/OpenCV2.1/src/ml;'
    • Linker -> Input -> Additional Dependencies...

      • For Debug Builds.. add: 'cv210d.lib; cxcore210d.lib; highgui210d.lib;'
      • For Release Builds.. add: 'cv210.lib; cxcore210.lib; highgui210.lib;'

第二步:自己随便写了几行程序,准备见证奇迹了,在Release下一切正常,可是,可是在Debug下编译正常,运行程序出现如下问题:

应用程序无法正常启动(0xc0150002)

 

这个错误可以说没有什么直接影响,如果不调试的话,可是这怎么行呢。于是开始Google和Baidu。

找到如下解决办法:

1. 首先尝试了安装vcredist_x86.exe,结果没有什么变化;

2. 添加Depend指出缺失的各个文件,结果仍然不行;

3. http://www.opencv.org.cn/forum/viewtopic.php?t=11927

程序执行正常,无任何错误

这个问题论坛里也有人反映,但是没有很好的解决方案,我看了半天也没个回答,自己动手试了下
将解决方案告诉大家,其实如果大家安装版主置顶的帖子去配置是不会有问题的,就怕像我这样的懒人
不想放弃2005还要装2.1的~~
解决方法如下:

debug中出现的错误我看了其他的人的做法,有一个也提到了如何解决这个问题
http://www.cnblogs.com/yushuitong/archi ... ommentform
其实也不是什么路径加载错误,只是我们安装的版本中关键的几个库跟环境不匹配。经过我的测试(可能不完全)
主要是:
1:cxcore210d.lib,cxcore210d.dll
2:highgui210d.lib,highgui210d.dll
只要将以上两个库重新编译并替换到C:/OpenCV2.1/bin,C:/OpenCV2.1/lib即可

具体过程参考本论坛的帖子,下载CMAKE2.8和需要编译版的OPenCV2.1
编译过程中大家不出意外肯定卡在Solution OpenCV的编译上,会报错,因为vs2005没有pmmintrin.h这个头文件
// #if defined __SSE3__ || _MSC_VER >= 1400
// #include "pmmintrin.h"
// #define CV_SSE3 1
// #endif
可以从2008拷贝,也可以直接注释掉
为了节约大家宝贵的编译时间,只需要注释掉就可以了
然后选择cxcore的工程,debug下编译,得到cxcore210d.lib,cxcore210d.dll,替换C:/OpenCV2.1/bin,C:/OpenCV2.1/lib中的文件,大家仔细看的话,其实自己编译过的cxcore210d.dll大小事3.60M而安装版的2.1所释放的cxcore210d.dll是3.64M,同样我们也可以把highgui210d.lib,highgui210d.dll替换掉。

打开自己的测试程序,debug下重编,运行,一切OK!

 

尝试了以上解决办法,因为我采用的是VS 2005,固有几处变化:

1. // #include "pmmintrin.h" 这个没有问题

2. 但是注释后出现其他的问题 关于 _mm_moveldup_ps, _mm_movehdup_ps和_mm_addsb_ps的没有定义,经查询得知错误源于没有包含头文件<intrin.h> 

3. 总结。pmmintrin.h是VS 2008下的头文件,其在VS2005下对应intrin.h

4. 解决上述问题后反复Rebuild All_Build和Install,直到基本成功。

 

解决以上问题后,用自己编译生成的1:cxcore210d.lib,cxcore210d.dll cv210d.dll
                                               2:highgui210d.lib,highgui210d.dll cv210d.lib

替换原有文件,问题解决。

 

总结:本来想偷懒,结果饶了一圈发现还是需要编译的,绕不过去啊。

 

当前没哟应用TBB,如果应用,参考:http://www.cnblogs.com/yushuitong/archive/2010/11/10/1873426.html#commentform

 

  •        1下载安装VS2010、OpenCVCmake2.82INTEL TBB3.0
  •        2 用CMake建立VS工程:

     ① 运行Cmake gui,选择好where..路径和where to…路径 [自己建立VS2010目录 D:/Program Files/OpenCV-2.1/vs2010]

     ② 点configure,选择Visual Studio 10,点finish,待变红色后;

勾选BUILD_SHARED_LIBS,BUILD_TESTS,OPENCV_BUILD_3DPARTY_LIBS,以及下面的WITH_JASPER,WITH_JPEG,WITH_PNG,WITH_TBB(一般这个没默认选上),和WITH_TIFF选项  ,去掉BUILD_NEW_PYTHON_SUPPORT(默认选上);

     ③ 再次点击configure,TBB_INCLUDE_DIR-NOTFOUND字样的红色选项,此处为CMAKE找不到INTEL TBB的包含文件为之所致,将INTEL TBB 3.0里面的INCLUDE文件夹路径(注意是INCLUDE,不是INCLUDE里面的子文件夹)定位到该配置属性的路径里,

     ④ 再次点击Configure,在TBB_LIB_DIR处又会出现红色一行,此处为INTEL TBB的库文件位置,此处必须将路径定位到含有LIB文件的位置,比如我的安装位置是D:/Program Files/tbb30_20100406oss/lib/ia32/vc10,由于是配置VS2010,所以我们选择VC10文件夹,ia32子文件夹是32位系统,此处应根据对应操作系统选择。

    ⑤ 点击generate,生成工程文件

  •        3 编译OpenCV:

    ① 用VS2010打开OpenCV.sln[上述目录VS2010中生成的]

    ② 右击解决方案资源管理器中的属性管理器,依次展开ALL_BUILD—Debug|Win32 — 右键单击Microsoft.Cpp.Win32.user,选择Properties(属性),然后选择VC++ Directories(VC++目录),在Executable Directories(可执行文件目录)里面将INTEL TBB 3.0的可执行路径(bin)填写到里面,须定位到VC10才可以,如我的是D:/Program Files/tbb30_20100406oss/lib/ia32/vc10,将Include Directories(包含目录)定位到Intel TBB的Include文件夹即可,无需再往深入定位,在Library Directories(库目录)里填写Intel TBB的LIB文件位置,定位到VC10文件夹

    ③ 在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。

    ④ 在Release下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。

  •       4  配置环境变量:

    ① 配置Windows的环境变量:把bin的路径加入Path   例如我的分别为: D:/Program Files/tbb30_20100406oss/bin/ia32/vc10;D:/Program Files/OpenCV-2.1/vs2010/bin   配置之后需重启

    ② 为VS2010配置OpenCV环境:同步骤3的②,依次展开后,在VC++ Directories(VC++目录)中增加D:/Program Files/OpenCV2.1/vs2010下的可执行文件(bin)、包含文件(include/opencv)、以及库文件(lib)、源文件(src/cv、src/cvaux、src/cxcore、src/highgui、src/ml)

  •      5  编程配置:新建项目opencvhello,为项目配置增加依赖的库,具体如下

    选择Solution Explorer里的opencvhello项目,点击鼠标右键,选择Properties,在[链接器 LINKER]的[输入INPUT]中;

为项目的Debug配置增加依赖的库: cv210d.lib;cvaux210d.lib;cxcore210d.lib;highgui210d.lib;ml210d.lib; 

为项目的Release配置增加依赖的库:cv210.lib;cvaux210.lib;cxcore210.lib;highgui210.lib;ml210.lib;

注意:添加依赖库的时候最好添加个文件,换行再添加下一个

 

因为VS 2005的问题,暂时没有尝试这个,留在以后吧。

 

 

原创粉丝点击