原文:http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html

还可以参考:http://blog.csdn.net/alpine_climbing/article/details/50449085

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

如果想重新编译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. 欢迎转载,但请尊重作者劳动注明出处! 

Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV相关推荐

  1. opencv在vs2012下重编译详细教程——解决按f11进入不了源代码

    最近用到opencv人脸识别的代码,想进源码看看实现过程,大家都知道opencv的源码在opencv/modules下,但是光看那么长的源代码实在麻烦,要是能在调试的时候按f11直接就能跟进内部代码就 ...

  2. 0xc000007b:vs2012+Opencv2.4.4出现0xc000007b问题

    在64位系统中,VS2012+opencv2.4.4下编程出现一个问题,我简单的读取图片就出现"应用程序无法正常启动0xc000007b"的问题:如图: 注意事项:把运行环境改成  ...

  3. VS2012 +OpenCv2.4.4配置

    使用OpenCV少了数据读取.填充.存储的麻烦. 转载于opencv官网:对于2010和2.43的配置可以直接挪用到新配置环境 http://www.opencv.org.cn/index.php/V ...

  4. Mac macOS 10.14 Mojave Xcode OpenCV 无法打开摄像头,调用摄像头权限错误

    Mac macOS 10.14 Mojave Xcode opencv 调用摄像头权限错误 This app has crashed because it attempted to access pr ...

  5. 在32位Ubuntu 10.04上编译Android 2.3

    在32位Ubuntu 10.04上编译Android 2.3 http://www.ylmf.net/ubuntu/tips/2011021722700.html 本人在Ubuntu 10.04系统 ...

  6. Mac OS X 10.8.X编译Android4.2.X源码不生成emulator的问题

    编译时的提示: Checking build tools versions- build/core/main.mk:165: ************************************* ...

  7. ubuntu 11.10下载和编译Android源码

    ubuntu 11.10下载和编译Android源码 由衷感谢网上的各个博主的文章,给了小弟我莫大的帮助.这里呢,小弟也把自己的经历记录下来,以供大家参考^^.这篇应该算是零基础.从无到有的流程介绍了 ...

  8. OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

    OpenCV-Python实战(10)--详解 OpenCV 轮廓检测 0. 前言 1. 轮廓介绍 2. 轮廓检测 3. 轮廓压缩 4. 图像矩 4. 1 一些基于矩的对象特征 4.2 Hu 不变矩 ...

  9. 图计算库 igraph 在 windows 10 上的编译安装

    图计算库 igraph 在 windows 10 上的编译安装 参考:https://igraph.org/c/doc/igraph-Installation.html#igraph-Installa ...

最新文章

  1. mysql保存数据提示:Out of range value for column错误
  2. linux上利用crontab定时备份postgres数据库及文件到windows系统
  3. solarized for securecrt
  4. python—操作MySQL增加数据
  5. Java 8 Streams:过滤和谓词否定
  6. python运维监控脚本_Python实现数通设备端口使用情况监控实例
  7. java converttobase64_Java 工具箱 | 图片-Base64 互转
  8. MATLAB信号处理之常用信号的表示(2)
  9. linux 下 sudo 指令不需要输入密码的配置
  10. Android之本地数据存储(SQLite数据库)
  11. aspen怎么做灵敏度分析_【技巧篇】Aspen系列篇之——灵敏度分析
  12. wav pcm格式文件解析
  13. 小米扫地机器人一直提示安装尘盒_忘记放回小米扫地机器人的尘盒 居然打开新彩蛋...
  14. Android - 修改主题和颜色
  15. vue3 kepp-alive 的使用
  16. chrome浏览器加载图片失败问题
  17. java利器下载_java利器app下载|
  18. matlab 坐标不用科学计数法,matlab不用科学计数法
  19. 理财笔记 - 听说的老A的不断买入自家公司股票实现财务自由
  20. bootstrap 页面垂直居中_bootstrap4如何实现div的水平居中以及垂直居中

热门文章

  1. Linxu内核模块开发入门(金荣的第一篇个人技术博客)
  2. ios开发 ajax hook,IOS中的网络拦截总结
  3. fx-4500科学计算机用法,应用CASIOfx-4500PA计算器计算LC50的方法
  4. Linux监听请求到达时间,4: zabbix5.0自动发现网站域名并监控访问状态和请求时间...
  5. android系统动态切换输入法,一种动态切换Android系统输入法的弹出模式的方法与流程...
  6. 皮一皮:程序员为什么只能吃青春饭?
  7. CentOS 8 即将停更,未来我们该何去何从?
  8. Java 9 - 17 特性解读:Java 9
  9. Redisson 是如何实现分布式锁的?
  10. Spring Boot 2.x基础教程:Swagger静态API文档的生成