您的位置:首页 > 运维架构

Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV

2016-07-14 14:55 519 查看
随笔- 17  文章- 1  评论- 109 

Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV

PS:[b]请参考最新的《Opencv
完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)》,绝对给力!由于
Opencv版本升级,大多人开始用新版本VS,等等,这篇已经过时了,而且当时没有在文中加入更合适的简介的配置方法,所以有一些东西不再适用。重写一篇,,无论是Win7还是Win8,无论是VS2010, VS2012, 还是VS2013,无论是Opencv 2.x.x,方法都是一样的,只是配置思路和操作流程不同而已。[/b]

如果想重新编译Opencv,可以参考本文,不过新版本也许不用配置ttb了吧,没试过。如果有需求再玩玩自己编译的。

posted @ 2013-01-11 19:54 from [FreedomShe]

 
重编译的好处:可以调试的时候看OpenCV的源代码。
重编译要得到的东西:Debug版本和Release版本的dll,lib,头文件。(dll添加到环境变量里,运行时用,自己编译的dll调试时可以跟踪到Opencv的源码内;lib和头文件配置到编译器里)
PS:如果只是使用Opencv而不需要跟踪源码,则使用Opencv自带的库文件即可。跳到5配置Opencv开发环境,对应的文件都在..\opencv\build\目录下,其中dll(bin目录),lib目录在平台文件夹下如..\opencv\build\ x86\vc10。
本机Win7 64位系统,装有VS2012,以编译32位的Opencv库为例,要编译64位库需要注意选择64位的配置。

1        下载Opecv,CMake,TBB并安装

下载OpenCV2.4.3:http://opencv.org/downloads.html,解压到D:\Program Files\
下载CMake2.8.10:http://www.cmake.org/cmake/resources/software.html,安装
下载tbb41_20121003oss:http://threadingbuildingblocks.org/download,解压到D:\Program Files\

2        配置TBB环境变量

Path里添加:D:\Program Files\tbb41_20121003oss\bin\ia32\vc11
bin目录内ia32表示要编译32位工程,intel64表示要编译64位工程,vc11表示VS版本为2012

3        用CMake生成VS2012的OpenCV工程

新建文件夹OpenCVProject:D:\Program Files\OpenCVProject(用于存放自己的OpenCV编译工程)。
打开CMake,"Browse Source..."选择Opencv的目录D:/Program Files/opencv(内有CMake的组态档"CMakeLists.txt"),"Browse Build..."选择刚才自己新建的工程存放路径"D:\Program Files\OpenCVProject"。点击Configure按钮,在出现的对话框中选择Visual Studio 11(如果编译64位dll注意选择64位VS11配置),默认Use default native
compilers,Finish继续。



 
稍等片刻出现该图
第一轮配置完后往下拉,勾选WITH_TBB,点击Configure进入第二轮。



 
修改红色部分TBB路径为D:/Program Files/tbb41_20121003oss/include,再次点击Configure;继续点击Configure,直到没有红色标记。



 
点击Generate生成Opencv工程,退出CMake。

4        用Opencv VS2012工程编译生成自己的Opencv库

打开生成的Opencv工程,选择CMakeTargets下INSTALL,右键“生成”,生成Debug版dll,lib。



 
切换编译模式为Release模式,重复上一步生成Release版dll,lib。



 
上面两步后就能看到最终Debug版和Release版的dll,lib,以及文档目录doc,头文件目录include(bin内为两个版本dll,lib内为两个版本lib)。



 
目标达成,在D:\Program Files\OpenCVProject\install内有我们所要的dll,lib,include头文件,有了这些就可以进行Opencv开发与源码跟踪了。跟dll关联的源代码在Opencv安装目录D:\Program Files\opencv\modules内。
我习惯将将D:\Program Files\OpenCVProject\install拷贝到D:\Program Files\opencv\下,并将install重命名为vc11x86。而此时D:\Program Files\OpenCVProject没有用了,但是不能删除,否则无法跟踪源码,占用6G多空间,可以通过VS2012的“清理解决方案”来减到3G多。

5        配置Opencv开发环境

在环境变量Path里添加:D:\Program Files\opencv\vc11x86\bin。

6        编写测试工程

6.1    打开VS2012,新建控制台应用程序TestOpencv。

6.2    配置包含目录和库目录

项目->xxx属性->VC++目录->包含目录,添加D:\Program Files\opencv\vc11x86\include
项目->xxx属性->VC++目录->库目录,添加D:\Program Files\opencv\vc11x86\lib



 
项目->xxx属性->链接器->输入->附加依赖项,添加lib文件名列表如下图。



 
对于配置方案为Debug的配置,添加:

opencv_calib3d243d.libopencv_contrib243d.libopencv_core243d.libopencv_features2d243d.libopencv_flann243d.libopencv_gpu243d.libopencv_highgui243d.libopencv_imgproc243d.libopencv_legacy243d.libopencv_ml243d.libopencv_nonfree243d.libopencv_objdetect243d.libopencv_photo243d.libopencv_stitching243d.libopencv_ts243d.libopencv_video243d.libopencv_videostab243d.lib


对于Release配置,添加

opencv_calib3d243.libopencv_contrib243.libopencv_core243.libopencv_features2d243.libopencv_flann243.libopencv_gpu243.libopencv_highgui243.libopencv_imgproc243.libopencv_legacy243.libopencv_ml243.libopencv_nonfree243.libopencv_objdetect243.libopencv_photo243.libopencv_stitching243.libopencv_ts243.libopencv_video243.libopencv_videostab243.lib


 
Opencv的dll和lib中,末尾带d的就是Debug版本。

6.3    添加测试代码

修改TestOpencv.cpp,代码为:



#include "stdafx.h"#include <opencv2\opencv.hpp>using namespace cv;using namespace std;int main(){	Mat img = imread("c:/pp.jpg");	if(img.empty())	{		cout<<"error";		return -1;	}	imshow("pp的靓照",img);	waitKey();	return 0;}




 
 
将要显示的图片保存为c:/pp.jpg编译运行,显示出图片。



 
通过设置断点发现,能够跟踪进入Opencv内部函数。




From:[Yuanbo She's BLOG], NJU LAMDA. 欢迎转载,但请尊重作者劳动注明出处! 




分类: 图像处理
标签: Opencv
绿色通道: 好文要顶 关注我 收藏该文与我联系 






FreedomShe
关注 - 5
粉丝 - 47

+加关注

3
0
(请您对文章做出评价)

« 上一篇:IME输入法编程心得
» 下一篇:Ubuntu12.10+Robucup2D15.1.0+WrightEagleBASE-4.0.0搭建Robocup
2D 仿真环境

posted @ 2013-01-11 20:17 FreedomShe 阅读(6816) 评论(19) 编辑 收藏

评论列表

  
#1楼2013-01-12 18:18 箫鸣  

真不错啊,我曾经编译但一直失败了。我等会转载这篇博客到我的博客上去喽~(www.ilovecode.cn)
支持(0)反对(0)

  
#2楼[楼主] 2013-01-12
23:41 FreedomShe  

@箫鸣

我曾经因为32位64位路径设置问题或是没配环境变量也失败过很多次,记录下来,写得浅显点利人利已……转吧……
支持(0)反对(0)

  
#3楼2013-02-28 17:18 yucor  

开始使用64位,在使用videocapture出问题。折腾,耗了接近一天,最后按照博主的方案解决。谢咯。。

期间遇到“fatal error LNK1112”需要仔细检查配置的库,第一次改了目标路径,不知是没确认还是系统自动复制了原来的64位对应的库文件,总是出问题,最后才看到问题。
支持(0)反对(0)

  
#4楼2013-04-01 11:42 ericwangcf  

使用64位编译,第四步生成失败啊
支持(0)反对(0)

  
#5楼2013-05-20 23:15 A
yi Image  

试了1天了,网上的各种方法,都没有成功;最后试了这个,成功了。

很感谢博主!
支持(0)反对(0)

  
#6楼[楼主] 2013-05-21
00:00 FreedomShe  

@A yi Image

利人利己,过一段时间我就又忘了自己当时是怎么配的了...
支持(0)反对(0)

  
#7楼2013-06-25 10:34 benbean  

真不错,测试成功!
支持(0)反对(0)

  
#8楼2013-07-10 13:23 Teddy_SE  

你好,我按这个教程编译的时候vs2012提示:

fatal error LNK1104: 无法打开文件“..\..\lib\Debug\opencv_core245d.lib”

请问应该怎么解决?

麻烦联系我邮箱:aslldab@126.com
支持(0)反对(0)

  
#9楼[楼主] 2013-07-10
13:31 FreedomShe  

@Teddy_SE

重新检查你的配置,配置路径找不到那个lib
支持(0)反对(0)

  
#10楼2013-07-10 14:03 Teddy_SE  

nvcc : fatal error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported

发现core项目里有这个报错。
支持(0)反对(0)

  
#11楼[楼主] 2013-07-10
14:06 FreedomShe  

@Teddy_SE

这个就不清楚了,你google下。可能你编译器有问题。
支持(0)反对(0)

  
#12楼2013-08-02 12:34 lycaste  

opnev完全按照你的来重新编译的,配置也完全一样,为什么我不能跟踪源码,f11提示没有此源文件
支持(0)反对(0)

  
#13楼2014-01-09 11:18 从山顶看下来  

我想问问,CMAKE下的是哪个版本的?
支持(0)反对(0)

  
#14楼2014-03-05 16:17 tuling56  

请问win32位机上能编译64位的OpenCV库吗?
支持(0)反对(0)

  
#15楼[楼主] 2014-03-05
23:39 FreedomShe  

@tuling56

没试过,你可以试试
支持(0)反对(0)

  
#16楼2014-03-06 16:17 tuling56  

@lycaste

把编译OpenCVProject目录里的modules文件夹覆盖掉opencv目录里的modules文件夹试试,不行的话,把OpenCVProject里的install文件夹当成没有自己编译的build文件夹,包含进去头文件和库目录
支持(0)反对(0)

  
#17楼2014-03-06 16:20 tuling56  

另外,楼主配置tbb库,是沿用以前的做法吗,还是有什么特别的考虑?据说从2.4.2之后,tbb_debug.dll缺失那个错误就消除了,不需要单独配置了
支持(0)反对(0)

  
#18楼[楼主] 2014-03-06
16:29 FreedomShe  

@tuling56

嗯,新版本的我还没试,只是安装过,应该不用配tbb了
支持(0)反对(0)

  
#19楼2014-04-09 10:11 Virtual
Earth  

@Teddy_SE 你需要先生成.lib,然后再安装。

右键解决方案 OpenCV,选择重新生成解决方案,即可
支持(0)反对(0)

刷新评论刷新页面返回顶部

注册用户登录后才能发表评论,请 登录 或 注册访问网站首页。

博客园首页博问新闻闪存程序员招聘知识库

最新IT新闻:

· 那些年,我们一起追过的诺基亚

· 我国成功研制出第二代安全电子邮件系统

· IE10/11 紧急安全公告 漏洞可远程执行代码

· iPod死不死,全在iPhone

· 在 Minecraft 的世界里游览丹麦

» 更多新闻...
最新知识库文章:
· Facebook和Google如何激发工程师的创造力

· 好的程序员到底好在哪里?

· 关于坐标系和投影的相关知识探讨

· 段念:永远选择自己想要的

· 微博CacheService架构浅析

» 更多知识库文章...

公告

Specialize in "Visual Based Robot Navagation"

Focus on Computer Vision and Robotics

Concern about the development of the robotics industry
请直接留言,留言已经关联了邮箱yuanboshe@126.com

昵称:FreedomShe

园龄:2年11个月

粉丝:47

关注:5
+加关注

<2013年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

搜索

 
 

常用链接

我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接

最新随笔

1. WowWee Rovio API for ROS Groovy
2. Configure Eclipse IDE in catkin of Ros Groovy
3. ——————————————————分割线——————————————————
4. Ubuntu12.10+Robucup2D15.1.0+WrightEagleBASE-4.0.0搭建Robocup 2D 仿真环境
5. Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV
6. IME输入法编程心得
7. 新建WPF工程后要做的那些事(MVVM模式)
8. RMI分布式时钟系统的设计与源码
9. IME输入法编程溯源——IME优秀资源索引(Updated 2012.11.20)
10. Java版kmeans实现(jar包下载及使用+算法介绍+源码简介)

我的标签

Opencv(3)
LDA(2)
HTK(2)
IME(2)
Ros(2)
SIFT(2)
WPF(2)
输入法编程(2)
语音识别(2)
图像识别(1)
更多

随笔分类(20)

Robocup(1)
Ros(2)
WPF(4)
基于视觉的机器人导航(2)
输入法编程(2)
图像处理(5)
语音识别(2)
作业(2)

随笔档案(17)

2013年6月 (1)
2013年5月 (2)
2013年1月 (2)
2012年11月 (5)
2012年10月 (1)
2012年5月 (2)
2012年4月 (4)

TEST

个人主页
学校里的

积分与排名

积分 - 23482
排名 - 6583

最新评论

1. Re:基于SIFT+Kmeans+LDA的图片分类器的实现
@FreedomShe

楼主你好,程序下载配置后可以运行,效果也不错,能不能解释一下第二部k-means分类后得到的Wordlist.yml中data数据的内容?
--53536412
2. Re:Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV
@Teddy_SE 你需要先生成.lib,然后再安装。

右键解决方案 OpenCV,选择重新生成解决方案,即可
--Virtual Earth
3. Re:VS2010+Opencv-2.4.0的配置攻略
@hantmac刚看到。。你应该已经解决了吧,我是把附依赖加项中所有的240d变成了244d,这和你自己的opencv的版本有关,看一下自己的版本是2.40还是2.44...
--爱学习的好娃
4. Re:Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV
@tuling56

嗯,新版本的我还没试,只是安装过,应该不用配tbb了
--FreedomShe
5. Re:Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV
另外,楼主配置tbb库,是沿用以前的做法吗,还是有什么特别的考虑?据说从2.4.2之后,tbb_debug.dll缺失那个错误就消除了,不需要单独配置了
--tuling56

阅读排行榜

1. VS2010+Opencv-2.4.0的配置攻略(65481)
2. Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV(6816)
3. 基于SIFT+Kmeans+LDA的图片分类器的实现(6183)
4. 在VS2010中应用SIFT(C)源码(5353)
5. IME输入法编程心得(1935)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: