Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持

  步骤:

  1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.willowgarage.com/wiki/InstallGuide

  2.在“2) Install Prerequisite Libraries and Tools”中提到了如果想支持Python调用需要Python 2.6或者 2.7版本,而且还需要NumPy和SciPy库。升级Python至2.7的方法请参考“Windows下升级Python 2.5到Python 2.7”一文。NumPy和SciPy的下载地址:http://www.scipy.org/Download,安装指导:http://www.scipy.org/Installing_SciPy/Windows。对于已经安装好了Python的用户来说,直接下载对应Python版本的二进制安装包安装即可。

  3.如果需要Intel TBB支持的话,去Intel TBB主页下载TBB(注意选择Windows版本的)。下载完之后解压到某个目录下(不需要安装,假设路径为D盘根目录),然后将头文件路径:D:\tbb40_233oss\include,Lib文件路径:D:\tbb40_233oss\lib\ia32\vc9和Bin文件路径:D:\tbb40_233oss\bin\ia32\vc9添加到系统环境变量中去。(注意自己对应的平台和版本,64位的请选择intel64,VS2005->VC8,VS2010->VC10)

  4.打开CMake GUI(我使用的版本是CMake2.8),Where is the source code 和 Where to build binaries填写如下图:

然后点击Configure按钮,选择VS2008 VC9编译器,CMake会产生一个基本的配置,不会为你勾选上WITH_TBB,所以你要自己在中间的列表窗口咋红找到WITH_TBB选项,然后勾选上。如果你还想要生成一些其他项目的配置文件,比如OpenCV提供的例子,那么你也需要自己勾选上相应的选项。最后点击Generate按钮,就会为你产生VS2008对应的项目文件。如果一切顺利,下面文本框中的输出如下:

General configuration for opencv 2.1.0 =====================================
Built as dynamic libs?: ON
Compiler:
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /Zm1000 /EHsc- /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /MD /O2 /Ob2 /D NDEBUG /Zi
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /Zm1000 /EHsc- /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO /debug
Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMENTAL:YES
Image I/O:
JPEG: build
PNG: build
TIFF: build
JPEG 2000: build
Interfaces:
Old Python: 0
Python: ON
Python interpreter: D:/Python27/python.exe
Python numpy: 1
Use IPP: NO
Use TBB: YES
Build Documentation 0
Install path: D:/OpenCV2.1
cvconfig.h is in: D:/OpenCV2.1
-----------------------------------------------------------------
Configuring done

  注意,如果以前使用过CMake编译过OpenCV,请先点击File菜单下的Delete Cache ,删除缓存文件,以免配置得不到更新。我在安装过程中就遇到了明明已经修改了Python的路径为2.7的路径,但是Configure产生的结果还是指向了原有Python2.5的路径的问题。

  5.打开VS2008,然后打开刚才生成的OpenCV.sln解决方案文件(在Where to build binaries路径下),分别生成Debug和Release版本。
  注意: 在生成CvPy项目的Debug版本过程中,会提示找不到Python27_d.lib导入库。查看cvPy项目属性的链接器->输入->附加依赖项,我们会发现所填写的导入库为D:\Python27\libs\python27.lib(路径可能不同)。也就是说CMake已经知道我们所下的Python2.7安装包中没有提供Python27.lib的Debug版本,所以为我们选择了Python27.lib的Release版本(注意生成Debug版本的过程中可以链接第三方的Release版本库,只是对应的库就没有提供调试信息了),为什么还会出现找不到Python27_d.lib的错误呢?原因在于cvPy项目的源文件cv.cpp包含了Python.h文件,而Python.h文件又包含了pyconfig.h文件,在pyconfig.h文件中有一段专门针对VS平台的导入库选择代码:

/* For an MSVC DLL, we can nominate the .lib files used by extensions */
#ifdef MS_COREDLL
# ifndef Py_BUILD_CORE /* not building the core - must be an ext */
# if defined(_MSC_VER)
/* So MSVC users need not specify the .lib file in
their Makefile (other compilers are generally
taken care of by distutils.) */
# ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
#endif /* MS_COREDLL */

所以在你生成Debug版本的过程中,链接器会去寻找python27_d.lib文件。
  解决的办法:
  1)修改pyconfig.h文件,将 pragma comment(lib,"python27_d.lib")改成pragma comment(lib,"python27.lib")
  2)下载python27_d.lib和python27_d.dll文件。将python27_d.lib文件放入D:\Python27\libs\目录下,将python27_d.dll放入C:\Windows\System32路径下。然后修改项目属性中的附加依赖项:D:\Python27\libs\python27.lib为D:\Python27\libs\python27_d.lib。(建议自己编译python的Debug库或者使用第一种方法,因为可能因为平台或者Python版本的原因,上面所提供的库不能正常使用,出现mismatch等错误情况)

  6.添加生成的cv.pyd文件的路径(D:\OpenCV2.1\lib\Release或者D:\OpenCV2.1\lib\Debug,具体看你需要使用的版本)到python的库路径中

  7.测试,打开CMD(命令行),在D:\OpenCV2.1\samples\python路径下运行:python delaunay.py,你会看到如下图所示的运行结果:)

  如果你看到上面的结果图了,恭喜你,以后你可以后用Python+OpenCV了。(注意本文中的路径请根据自己的情况确定)

作者: pzxbc
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持的更多相关文章

  1. windows下用vs2008和boost结合编译程序

      原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://co63oc.blog.51cto.com/904636/504469 win ...

  2. Ubuntu 16.04下为Android编译OpenCV 3.2.0 Manager

    http://johnhany.net/2016/07/build-opencv-manager-for-android-on-ubuntu/ 最近想在Android上尝试一下SIFT和SURF匹配算 ...

  3. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  4. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  5. windows下用vs2010编译ffmpeg

    转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...

  6. Windows下从源代码编译Skia

    在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. fo ...

  7. vs2008编译opencv,不能copy CMakeVSMacros2.vsmacros

    由于学习opencv,要查看源码文件,所以要先对opencv进行编译,可悲的是出错了 “不能copy   CMakeVSMacros2.vsmacros” 通过上网查找资料,之所以出现这种情况,是因为 ...

  8. OpenCV - Windows(win10)编译opencv + opencv_contrib

    在之前的几篇文章中,我提到了在Android.Linux中编译opencv + opencv_contrib,这篇文章主要讲在Windows中编译opencv + opencv_contrib. 首先 ...

  9. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

随机推荐

  1. poj 1328 贪心

    /* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端 ...

  2. 数据类型转换中的一些特殊情况(JY06-JavaScript)

    1.字符串的不可变性 字符串定义了后,会一直占据内存空间,企鹅该处内存空间(栈)不可被重新赋值. 2.短路运算 ||.&& 二元运算符,返回参与运算的操作数的原值(原数据类型和原数据) ...

  3. java中保留几位小数

    public class NumUtils { /** * 保留两位小数 * * @param d * @return */ public static String get2Wei(double d ...

  4. office2010删除多余空行

    选择 ctrl+H,弹出 "查找和替换"对话框,在"查找内容"输入"^p^p",并在"替换为"输入"^p&qu ...

  5. Shell中的${},##和%%的使用

    假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}:删掉第一个/ 及其左边的字符串:dir1/di ...

  6. mysql 数据库字符串替换

    UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE `field_name` ...

  7. django安装

    见 http://jingyan.baidu.com/article/466506580e7d29f549e5f8b6.html 下载安装python下载解压django cmd进入django目录, ...

  8. CentOS 7 之安装X Window System

    网上说的直接 yum groupinstall "Desktop"经实验,在我的机器上是无效的.我使用的是: yum groupinstall 'GNOME Desktop' 才o ...

  9. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5

    最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈  .之前用ThinkPHP的时候,下载完放到网 ...

  10. Div在BOdy中居中

    <h1 style="position: absolute; width: 500px; height:200px; left:%; top:%; margin-left:-250px ...