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


    环境

    操作系统: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,如图:

    捕获

    这里好像是需要自已进行编译的,所以还是采用第二种方法。

    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左右包括了预编译的库等):

                捕获2

    上面三项内容已足以开始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”,如下图所示:

    捕获3

    其中第一行是opencv源代码的位置,第二行是你想要用于编译opencv的位置,下面的Grouped和Advanced建议选上,可以对配置选项进行分组。

    • 按下左下方的Configure,选择Visual Studio 10,如图

    捕获6

    然后选择Finish,CMake会对当前的环境进行检测。如果没有问题就会完整显示如下画面:

    捕获4

    • 在WITH中,勾选需要使用的特性,比如我要使用TBB和Qt,那么就把WITH_TBB,WITH_QT选上。

    捕获5

    • 在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)。

    捕获7

      • 编译安装DEBUG版本
        • 选择Debug模式,选择Build->Build Solution,等待build完成。这一过程中可能会出现缺少python27_d.lib相关的错误,可以不必理会
        • 在INSTALL项目上,右键单击,选择build,这一步会把debug模式相关的文件(include,lib等)生成到<build目录>\install下。这一过程中,关于python27_d.lib的错误可以不必理会
      • 编译安装RELEASE版本
        • 选择Release模式,选择Build->Build Solution,等待build完成。
        • 在INSTALL项目上,右键单击,选择build,这将会把release模式相关的文件(include,lib等)生成到<build目录>\install下。

    最后生成的<build目录>\install如下图所示:

    捕获8

    <build目录>\install\lib如下图所示:(同时包含release和debug的库)

    捕获9

    • 然后编译opencv的文档,如图所示,分别单独编译docs和html_docs(文档不会自动build)

    WindowsBuildDoc

    build过程会自动调用sphinx和Miktex进行文档的创建。docs的结果在<build目录>\doc中为pdf文件,html_docs的结果在<build目录>\doc\_html文件夹中为index.html。这时候可以再build一次INSTALL项目,将生成的文档安装到<build目录>\install\doc下

    Step 4:添加OpenCV路径至PATH

    推荐使用Path Editor进行添加,如下图所示:

    捕获10

    其中我还添加了TBB和Qt的bin路径。

    另外,还可以设置系统的环境变量OPENCV_DIR来指向OpenCV的安装路径。我的是D:\Develop\Opencv\install

    Step 5:检查OpenCV是否安装成功

    打开<opencv Build目录>\install\bin\Debug\contours2.exe(或者其他程序),如果成功运行,则表示OpenCV安装成功!运行结果如下:

    捕获11捕获12

    遇到的问题

    • 问题一:在使用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

  • 相关阅读:
    EdgexGo2.0学习22 EdgeX 物模型key含义
    Linux c 开发20 libmodbus增加支持rtu over tcp
    The ObjectManager found an invalid number of fixups. This usually indicates
    一例invalid conversion from ‘int’ to ‘modbus_error_recovery_mode’
    Linux c 开发23 make文件
    error trying to exec 'cc1': execvp: No such file or directory
    github最新提交代码方法
    查看容器占用磁盘大小
    Ubuntu18.04 ARM环境1 安装mosquitto
    Linux c 开发18 Linux C 开发中要注意声明函数
  • 原文地址:https://www.cnblogs.com/dosrun/p/2858373.html
Copyright © 2020-2023  润新知