使用visual studio 2012 编译opencv2.4.9
最近,由于需要从opencv源码部分对opencv中的某个函数进行修改,以提升算法的速度,因此一直在尝试使用vs2012来编译opencv。期间不乏多次的失败。今天通过实验发现了自己编译的opencv库终于可以使用了,不再出现之前出现的链接错误。现将编译过程记录如下,希望可以给需要的人提供思路和帮助。如发现错误之处,也请留言指出,谢谢。
首先,来看看opencv的安装目录(如下图),可以发现有两个子文件夹。其中build文件夹是已经编译好的,可以直接使用的,而source文件夹顾名思义就是opencv所有的的源码了。但是该源码并不是一个VS的工程文件,因此没法将整个整个源码像打开一个vs工程一样将其打开:

我们现在要做的第一步就是将source中的源码“解包”(“解包”是什么意思我现在也没有弄清楚,在某篇博客中看到的)成一个VS2012的项目。需要用到的工具是Cmake。
(1)下载并安装好cmake,如下图所示。(我使用的是3.0版本)

(2)在cmake中选择源码路径,并选择将要生成的opencv工程的解决方案的路径。

(3)路径设置好之后,点击Configure按钮。出现如下情况。根据自己的vs版本选择对应的即可。(我的是vs2012):

(4)点击finish后cmake开始工作,结束后出现configure down字样:

(5)再次点击一次Configure,红色部分消失,再次出现configure down:

(6)最后点击Generate,出现Generating down,完成了opencv的解包:

(7)来看看目标路径中都生成了什么。这就是我们通过cmake想要得到的vs2012的解决方案。打开Opencv.sln即可在vs2012中打开opencv的整个项目(注意,当前生成的目录中没有bin和lib这两个目录):

通过上面一步一步详细的介绍,我门现在终于可以饱览opencv源码真容了。我们打开Opencv.sln,在vs2012中打开opencv的项目:

可以看到,vs已经成功加载了opencv的整个项目。在解决方案上右键,并在弹出菜单中点击生成解决方案,等待几分中的时间:


待生成成功后,我们再来看看opencv项目目录,可以看到目录中多了两个文件夹lib和bin。这两个目录就是我们自己编译的opencv的库:

将bin和lib两个文件夹下的Debug目录下的文件全部拷贝到opencv的安装目录下,覆盖掉原来的lib和dll文件(这样的话就不用重新配置环境了)

编写一段测试程序(我在imshow源码中增加了一个cout<<“this is a test”<<endl;语句):
#include<opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv; int main()
{
int i;
Mat img = imread("test.jpg");
if (img.empty())
{
fprintf(stderr,"Error:load image failed.");
system("pause");
return -1;
}
namedWindow("image",CV_WINDOW_AUTOSIZE);
imshow("image",img);
waitKey();
system("pause");
return 0;
}
运行后结果如下,可以看到,控制台中输出了this is a test!:

至此,整个opencv的编译过程到此结束。希望可以给大家帮助!
参考博客:
http://www.tuicool.com/articles/f6ZBZv
原创博文,转载请注明出处:http://www.cnblogs.com/xiongmao-cpp/
使用visual studio 2012 编译opencv2.4.9的更多相关文章
- Visual Studio 2012编译的程序无法在XP下运行的解决办法【转】
最近看到一篇<Windows编程革命简史>,想到以前刚开始用VS2012的时候,编译的程序在其他人那无法运行,一查才知道是VS2012本身不支持XP.当然现在微软早已在VS2012 Upd ...
- Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案(转载)
转载:http://www.th7.cn/Program/c/201303/127343.shtml 原因是Visual C++ 2012 使用了更加安全的 run-time library rout ...
- Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may ...
- [转]Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
原文地址:http://www.cnblogs.com/gb2013/archive/2013/03/05/SecurityEnhancementsInTheCRT.html 在VS 2012 中编译 ...
- Visual Studio 2012 编译C++显示cl命令
为了用newlisp来实现VC编译,以便用我的Emacs开发VC程序,而不需要再打开VS 2012, 需要自己实现命令行的编译.我不需要nmake,因为我想直接了解VC编译器,以便今后更好的驾驭它. ...
- 【解决】Microsoft Visual Studio 2012 打开2008下编译的silverlight3项目
最近因为项目需要,老师要我搞一发流程设计器,毫无头绪呀妈蛋 .. 我考虑是用silverlight呢还是jquery .. 上网找了找 .. 有一个用silverlight3写的 貌似IDE用的是V ...
- VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程
邮箱已经收到了Visual Studio 2013的升级通知,但是很多软件如OpenCV.Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了). 网上搜了一些VS2012(或 ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(二)
本文为<在Visual Studio 2012中使用VMSDK开发领域特定语言>专题文章的第二部分,在这部分内容中,将以实际应用为例,介绍开发DSL的主要步骤,包括设计.定制.调试.发布以 ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)
前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...
随机推荐
- java 客户端获取真实ip地址
在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...
- [daily][network] NAT原理(转)
写在转发之前: 一直以来,我一直有一个疑惑,SNAT的时候,如果两个内网主机恰巧使用了相同的源端口号该怎么办呢? 我自己猜测的方法是改掉一个端口号,把端口一起映射(当然还有另一个设想,就是把包同时广播 ...
- 权限管理:(RBAC)
一般做正规的权限管理程序基本就是以下M表模式: 例1:在页面显示管理者的权限,并可以修改的管理界面 数据库表如下: 管理界面(附ajax): <body> <?php include ...
- ASP.Net网站程序在编译发布部署后的后期修改
ASP.Net网站程序在发布部署后的后期修改 作者:东篱南山 这里说的后期修改是指网站编译发布并部署好之后,对程序进行的修改,即在不能更改现有代码的情况下,更改页面的显示或是更改业务逻辑.一般是在程序 ...
- sql索引组织
select p.*, p.partition_id, c.object_id,OBJECT_NAME(c.object_id) objectName,c.name,c.column_id,pc.m ...
- Python 汉字简体和繁体的相互转换
其实利用python实现汉字的简体和繁体相互转早有人做过,并发布到github上了,地址:https://github.com/skydark/nstools/tree/master/zhtools ...
- css背景图片定位练习(二): background-position的百分比
background-position:x y; 百分比定位并不能直观的看出来,需要通过计算. background-position百分比计算公式: (容器宽度—背景图片的宽度)*x%=xpx(容器 ...
- [LeetCode] Jump Game II(贪婪算法)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- sql 显示0001
- LeetCode Intersection of Two Linked Lists
原题链接在这里:https://leetcode.com/problems/intersection-of-two-linked-lists/ 思路:1. 找到距离各自tail 相同距离的起始List ...