设为首页 收藏本站
查看: 1223|回复: 0

在windows 7下配置opencv 2.4.3的开发环境

[复制链接]

尚未签到

发表于 2015-5-8 11:04:45 | 显示全部楼层 |阅读模式
环境
  操作系统:Windows 7 旗舰版 32-bit (6.1, Build 7601) Service Pack 1
  opencv版本:version 2.4.3
  C++:Microsoft Visual C++ 2010 Express
  过程
  可以有两种方式安装opencv开发库:第一种,使用预编译的库(.exe格式)直接安装;第二种,从git上获取最新的源代码,然后自己编译。
  Solution 1:使用预编译的库
  从下面的网站中下载需要的opencv版本,这里是opencv 2.4.3(这一版本好像没有提供预编译的库):
  http://sourceforge.net/projects/opencvlibrary/files/opencv-win/
  下载得到的OpenCV-2.4.3.exe,其实是一个打包的文件,运行之后得到一个3.10G大小的文件夹,名为opencv,如图:
DSC0000.png
  这里好像是需要自已进行编译的,所以还是采用第二种方法。
  Solution 2:本地编译
  step 1:安装必要的软件和第三方库
  
       
  • 安装Microsoft Visual Studio ,当然可以采用其它的IDE开发工具,这里我使用的是 Microsoft Visual C++ 2010 Express   
  • 安装CMake,用于从opencv的源代码中,产生相应的项目文件——用于编译产生必要的库,我使用的是cmake-2.8.10.2-win32-x86.exe   
  • opencv源代码,有两种方式获得(推荐第二种方式)(第一种方式获得440M左右的源代码,第二种方式则有3.10G左右包括了预编译的库等):
            
    • 第一方式,使用git工具获取最新源代码 (比较慢
                   
      • 下载安装msysgit,https://code.google.com/p/msysgit/downloads/list,我使用的是msysGit-fullinstall-1.8.1-preview20130110.exe            
      • 下载安装TortoiseGit,https://code.google.com/p/tortoisegit/wiki/Download,这是git的一个GUI前端,方便使用。我使用的版本是TortoiseGit-1.7.15.0-32bit.msi。安装好后设置msysgit的地址,打开settings,设置Git.exe目录,         
               
      DSC0001.png
               
               
                   
      • 在D盘建立文件夹opencv,进入这个文件夹,右键选择Git Clone,在URL中填入  https://github.com/Itseez/opencv.git,点击OK         
                  
          
    DSC0002.png
         
          
            
    • 第二方式,使用打包好的代码安装程序(推荐这一种方式),可以在http://sourceforge.net/projects/opencvlibrary/files/opencv-win/下载,其实就是OpenCV-2.4.3.exe这个程序,直接运行即可 。我把解压后得到的opencv文件夹放在D:\Develop\opencv_src中。     
       
  上面三项内容已足以开始opencv的编译安装,但是还有一些第三方的工具,推荐安装。
  
       
  • python库,提供opencv中python的API, 我使用2.7.3版本
            
    • 安装python扩展安装工具Setuptools(用于安装sphinx),貌似只支持到python2.7版本        
    • 安装Sphinx(python文档生成工具,用于创建opencv文档)
                   
      • 打开powershell (或者cmd)            
      • 执行:cd D:\Develop\Python27\Scripts            
      • 再执行:.\easy_install.exe sphinx,就好了         
                  
          
  • Numpy,python的科学计算包 。下载并安装即可。我使用的是numpy-1.7.0rc1-win32-superpack-python2.7.exe,它会自动检测python的安装目录   
  • Miktex,tex文档编辑生成工具,用于生成pdf格式的opencv文档,我使用的是basic-miktex-2.9.4521.exe,它会根据需要自动下载相应的宏包。   
  • Intel ? Threading Building Blocks (TBB),opencv中的一些并行代码可以使用TBB来进行加速,不装也无所谓,装上则运算效果更好一些。我使用的是4.1 update 1 ,将其解压放入一个文件夹即可,如,D:\Develop\TBB   
  • Intel ? Integrated Performance Primitives (IPP),(收费)加速色彩变换,Haar 训练,DFT函数,这里我没有使用   
  • Qt framework,opencv本身可以利用Qt库获得更好的图形界面支持(相对于最初始的highgui). 目前,qt支持到vs2010,如果使用vs2012就需要从源代码进行编译。
            
    • 下载qt库的开源安装包(在这里下载http://qt-project.org/downloads),我使用的是qt-win-opensource-4.8.4-vs2010.exe,直接运行安装即可     
          
  • Eigen,针对线性代数运算的C++模板库,实现了线性代数的相关算法。下载并解压到相关的文件,如,D:\Develop\Eigen,我使用的是3.1.2版本,但是在编译opencv的时候,设置EIGEN_INCLUDE_PATH为D:/Develop/Eigen/eigen-eigen-5097c01bcdc4/Eigen/src,会提示找不到Eigen/core,我猜测可能要对Eigen编译安装才行。对Eigen的编译需要使用Fortain库。   
  • OpenEXR,用于处理高动态范围的图像的函数库,下载并解压放在一个目录即可,如:D:\Develop\openexr-1.7.1   
  • OpenNI Framework,没有使用,openNI与特定的采集设备配合可以实现人机交互,手势识别等等一系列的功能,其中一种采集设备就是Kinect
  Step 2:使用CMake进行配置
  
       
  • 打开CMake(cmake-gui),设置”where is the source code”和”Where to build the binaries”,如下图所示:
  
DSC0003.png
  其中第一行是opencv源代码的位置,第二行是你想要用于编译opencv的位置,下面的Grouped和Advanced建议选上,可以对配置选项进行分组。
  
       
  • 按下左下方的Configure,选择Visual Studio 10,如图
  
DSC0004.png
  
  然后选择Finish,CMake会对当前的环境进行检测。如果没有问题就会完整显示如下画面:
  
DSC0005.png
  
       
  • 在WITH中,勾选需要使用的特性,比如我要使用TBB和Qt,那么就把WITH_TBB,WITH_QT选上。
  
DSC0006.png
  
       
  • 在Ungrouped Entries组中,手工指定CMake没有检测到,而你又需要使用的环境变量。比如,我需要TBB,就设定TBB_INCLUDE_DIRS为D:/Develop/TBB/tbb41_20121003oss/include等等。在这一步中,将上述第三方库诸如python,qt等的环境变量在Ungrouped Entries中设定好。   
  • 浏览其它选项,选择需要的内容,特别地,在ENABLE中的ENABLE_SOLUTION_FOLDERS必须确定选上   
  • 设定完成后,点击左下方Generate,生成vs2010的工程文件。
  Step 3:使用vs2010进行编译
  
       
  • 进入在CMake中”Where to build the binaries”所设定的目录,打开vs2010的solution,通过选择下述的下拉菜单,来选择编译Debug版本和release版本(Build->Build Solution)。
  
DSC0007.png
  
       
           
    • 编译安装DEBUG版本
                 
      • 选择Debug模式,选择Build->Build Solution,等待build完成。这一过程中可能会出现缺少python27_d.lib相关的错误,可以不必理会         
      • 在INSTALL项目上,右键单击,选择build,这一步会把debug模式相关的文件(include,lib等)生成到\install下。这一过程中,关于python27_d.lib的错误可以不必理会      
                 
    • 编译安装RELEASE版本
                 
      • 选择Release模式,选择Build->Build Solution,等待build完成。         
      • 在INSTALL项目上,右键单击,选择build,这将会把release模式相关的文件(include,lib等)生成到\install下。      
              

  
  最后生成的\install如下图所示:
DSC0008.png
  \install\lib如下图所示:(同时包含release和debug的库)
DSC0009.png
  
       
  • 然后编译opencv的文档,如图所示,分别单独编译docs和html_docs(文档不会自动build)
  
DSC00010.png
  
  build过程会自动调用sphinx和Miktex进行文档的创建。docs的结果在\doc中为pdf文件,html_docs的结果在\doc\_html文件夹中为index.html。这时候可以再build一次INSTALL项目,将生成的文档安装到\install\doc下
  Step 4:添加OpenCV路径至PATH
  推荐使用Path Editor进行添加,如下图所示:
DSC00011.png
  其中我还添加了TBB和Qt的bin路径。
  另外,还可以设置系统的环境变量OPENCV_DIR来指向OpenCV的安装路径。我的是D:\Develop\Opencv\install
  Step 5:检查OpenCV是否安装成功
  打开\install\bin\Debug\contours2.exe(或者其他程序),如果成功运行,则表示OpenCV安装成功!运行结果如下:
DSC00012.png DSC00013.png
  
  遇到的问题
  
       
  • 问题一:在使用cmake的过程中,点击Configure后,提示如下:
  
  The CXX compiler identification is MSVC 16.0.30319.1      
The C compiler identification is MSVC 16.0.30319.1      
Check for working CXX compiler using: Visual Studio 10      
Check for working CXX compiler using: Visual Studio 10 -- broken        
CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:54 (message):         
  The C++ compiler "C:/Program Files/Microsoft Visual Studio         
  10.0/VC/bin/cl.exe" is not able to compile a simple test program.

  …… ……
  LINK : fatal error LNK1123: failure during conversion to COFF: file invalid        
or corrupt         
[D:\Develop\Opencv\CMakeFiles\CMakeTmp\cmTryCompileExec521527363.vcxproj]

  Done Building Project        
"D:\Develop\Opencv\CMakeFiles\CMakeTmp\cmTryCompileExec521527363.vcxproj"         
(default targets) -- FAILED.

  …… ……
  解决的办法:
  首先,打开cmd,切换到C:/Program Files/Microsoft Visual Studio 10.0/VC/bin/目录,执行cl.exe命令,出现错误,提示缺少mspdb100.dll,根据dudu的一篇文章《解决VS2010自带的C/C++编译器CL找不到mspdb100.dll的问题》,执行:
   
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"

即可解决由环境变量缺失造成cl.exe不能使用的问题

       其次,对于fatal error LNK1123,根据stackoverFlow的一个提问LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt after installing VS2012 release preview,这是因为我安装了vs2012,导致vs2012自带的.NET4.5替换了原有的.NET,我卸载了vs2012以及.NET4.5组件,重新安装.NET4.0,再次Configure就好了。

       cl.exe不能正常执行是由error LNK1123造成的,单单解决环境变量问题不能解决“‘cl.exe’ is not able to compile a simple test program”的问题




  • 问题二:执行CMake的configure命令,出现如下错误:

  CMake Warning at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindQt4.cmake:615 (message):
  C:/Qt/Qt5.0.0/5.0.0/msvc2010/bin/qmake.exe reported QT_INSTALL_LIBS as
  "C:/Qt/Qt5.0.0/5.0.0/msvc2010/lib" but QtCore could not be found there.  Qt
  is NOT installed correctly for the target build environment.
Call Stack (most recent call first):
  cmake/OpenCVFindLibsGUI.cmake:8 (find_package)
  CMakeLists.txt:377 (include)

  …… ……
  解决的办法:
  这一问题是因为,一开始我使用的是Qt5,我在C:/Qt/Qt5.0.0/5.0.0/msvc2010/lib中确实没有找到QtCore,而且CMmake使用的是FindQt4.cmake,并不能找到Qt5的一些关键文件。换句话说,目前CMake(2.8.10.2)并不支持Qt5,所以我只好将Qt5卸载然后安装qt-4.8.4,问题解决。



  • 问题三:在使用vs2010编译Debug版本的opencv时,提示如下错误:

  Error    1    error LNK1104: cannot open file 'python27_d.lib'    D:\Develop\Opencv\modules\python\LINK
  解决的办法:
这是因为在编译Debug版的opencv时需要使用debug类型的库,python27_d.lib是python的debug库,这个问题不解决也没有关系。如果要解决的话,可以下载python的源代码,然后编译python的Debug版本即可,不是一般的麻烦。



  • 问题四:如果在CMake中设置了GIT_EXECUTABLE,运行Configure之后,会显示缺少libiconv-2.dll的错误

  解决的方法:
  这个问题的解决可以参考stackoverflow上的一个提问Git for Windows - The Program can't start because libiconv2.dll is missing,而我由于没有设置GIT_EXECUTABLE,所以就回避了这个问题。


主要参考资料
  OpenCV的在线文档《Installation in Windows》,http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html#windowssetpathandenviromentvariable

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-64928-1-1.html 上篇帖子: Windows Phone 7 网络编程之webclient和httpwebrequest的使用 下篇帖子: 微软Windows Phone 7新特性详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表