使用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;语句):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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/

posted @   Num.Zero  阅读(3862)  评论(1编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示