【OpenCV第一篇】安装OpenCV



【OpenCV第一篇】安装OpenCV

本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子。

《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764

一.OpenCV的下载

可以到http://www.opencv.org.cn/index.php/Download,然后选一个较新版本下载。我下的是V2.3.1版本,下载地址是:

http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe

下载完成后,双击运行exe,选择输出目录,我选择的是D:\opencv。然后解压缩就完成了安装。安装过程如下图所示:

 

二.在我的电脑中配置OpenCV

在“我的电脑”右击弹出“系统属性”对话框,选择“高级”再点击“环境变量”,然后再编辑path,在“编辑用户变量”对话框的变量值输入以下三条,注意用“;”来分开。

D:\opencv\opencv\build\x86\vc9\bin;

D:\opencv\opencv\build\x86\mingw\bin;

D:\opencv\opencv\build\common\tbb\ia32\vc9;

 

三.在VS2008中加入OpenCV

VS2008中点击“工具”,再点击“选项”,然后选择“项目和解决方案”,手动加入库文件,引用文件和包含文件即可完成OpenCVVS2008的导入。 

 

四.第一个OpenCV程序

下面是最简单的OpenCV使用例子,功能也很简单——加载图像文件并显示出来。代码如下:

[cpp]  view plain copy
  1. //显示图像文件  
  2. #include <opencv2/opencv.hpp>  
  3. using namespace std;  
  4.   
  5. #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")  
  6.   
  7. int main()  
  8. {  
  9.     const char *pstrImageName = "冲浪大师赛001.jpg";  
  10.     const char *pstrWindowsTitle = "OpenCV第一个程序(http://blog.csdn.net/MoreWindows)";  
  11.   
  12.     //从文件中读取图像  
  13.     IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);  
  14.   
  15.     //创建窗口  
  16.     cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);  
  17.   
  18.     //在指定窗口中显示图像  
  19.     cvShowImage(pstrWindowsTitle, pImage);  
  20.   
  21.     //等待按键事件  
  22.     cvWaitKey();  
  23.   
  24.     cvDestroyWindow(pstrWindowsTitle);  
  25.     cvReleaseImage(&pImage);  
  26.     return 0;  
  27. }  

对代码中的主要函数进行下讲解:

 

1.创建窗口 cvNamedWindow

函数名称:cvNamedWindow 
函数功能:创建窗口
 
函数原型:
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );

参数说明:
第一个参数表示
窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。被创建的窗口可以通过它们的名字被引用。 
第二个参数表示
窗口属性标志。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像。 
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。

注意:
如果已经存在这个名字的窗口,这个函数将不做任何事情。

 

2.在指定窗口中显示图像 cvShowImage

函数名称:cvShowImage 
函数功能:在指定窗口中显示图像
 
函数原型:
void cvShowImage
( const char* name, const CvArr* image );
参数说明:

第一个参数:窗口的名字。 
第二个参数:
被显示的图像。 

3.等待按键事件 cvWaitKey

函数名称:cvWaitKey

函数功能:等待按键事件

函数原型:
int cvWaitKey
( int delay=0 );
参数说明:

第一个参数:延迟的毫秒数,当delay<=0时表示无限等待。

函数返回值:

如果超过指定时间则返回-1,否则返回被按键的值。

 

编译,居然出错了!!错误信息如下:

1>正在链接...

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvReleaseImage,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvDestroyWindow,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvWaitKey,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvShowImage,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvNamedWindow,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvLoadImage,该符号在函数_main 中被引用

 

现在如何解决这个问题了?既然是在链接时出的错,说明肯定有静态库没有被编译器找到。因此我们在VS2008中点击“项目”,再点击“属性”,依次展开“配置属性”-->“链接器”-->“输入”在“附加依赖项中”添加如下静态文件。

opencv_calib3d231d.lib opencv_contrib231d.lib opencv_core231d.lib opencv_features2d231d.lib opencv_flann231d.lib opencv_gpu231d.lib opencv_highgui231d.lib opencv_imgproc231d.lib opencv_legacy231d.lib opencv_ml231d.lib opencv_objdetect231d.lib opencv_ts231d.lib opencv_video231d.lib

 

再编译,成功。程序运行结果如下图所示:

呵呵,很酷的冲浪~~

 

下面列出OpenCV入门指南目录,方便大家查看。

1.OpenCV入门指南】第一篇安装OpenCV

2.OpenCV入门指南】第二篇缩放图像

3.OpenCV入门指南】第三篇Canny边缘检测

4.OpenCV入门指南】第四篇图像的二值化

5.OpenCV入门指南】第五篇轮廓检测上

6.OpenCV入门指南】第六篇轮廓检测下

7.OpenCV入门指南】第七篇线段检测与圆检测

8.OpenCV入门指南】第八篇灰度直方图

9.OpenCV入门指南】第九篇灰度直方图均衡化

10.OpenCV入门指南】第十篇彩色直方图均衡化

11.OpenCV入门指南】第十一篇鼠标绘图

12.OpenCV入门指南】第十二篇无法运行OpenCV程序?

13.OpenCV入门指南】第十三篇人脸识别

14.《【OpenCV入门指南】第十四篇  Haartraining》即将发布

 

转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8225783

《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764 


版权声明:本文为博主原创文章,未经博主允许不得转载。

56
3
猜你在找
VC++游戏开发基础系列从入门到精通
C语言及程序设计初步
C语言及程序设计提高
APP内置IM 系统——从入门到千万级在线
Qt基础与Qt on Android入门
visual studio的opencv安装与配置
Visual Studio 2010下OpenCv 安装与配置
visual studio 2010下安装OpenCV及相关配置
Visual Studio 2010下OpenCv 安装与配置
OpenCV23+Visual Studio 2008开发环境配置
id="ad_frm_0" frameborder="0" scrolling="no" src="http://blog.csdn.net/common/ad.html?t=4&containerId=ad_cen&frmId=ad_frm_0" style="border-width: 0px; overflow: hidden; width: 746px; height: 90px;">
查看评论
39楼  lancerlian 2015-06-13 16:19发表 [回复]
感谢楼主
38楼  qq_21111835 2015-05-30 11:05发表 [回复]
大神,你好,我是搞stm32的大二狗,现在想学openCV,能不能加你扣扣,以便有问题请教,或者相关的QQ群也可以,谢谢!
37楼  rambo_cheung 2015-05-14 10:33发表 [回复]
为什么编译成功,还是没有出现图像呢
36楼  Buick100 2015-05-05 10:06发表 [回复]
fatal error C1083: 无法打开包括文件:“opencv2/opencv.hpp”: No such file or directory 
这个错误完美解决。
之前看的楼主的方法,VS2008+OpenCV2.3.1配置完成后总是出现这个错误,后来自己根据网上的方法自己修改终于搞好了,希望可以对其他人有所帮助:
路径配置没问题,我的VS2008包含文件是D:\OpenCV2.3.1\opencv\build\include
库文件是:D:\OpenCV2.3.1\opencv\build\x86\vc10\lib
爱其他的和lz一样
35楼  Buick100 2015-05-05 10:07发表 [回复]
fatal error C1083: 无法打开包括文件:“opencv2/opencv.hpp”: No such file or directory 
这个错误完美解决。
之前看的楼主的方法,VS2008+OpenCV2.3.1配置完成后总是出现这个错误,后来自己根据网上的方法自己修改终于搞好了,希望可以对其他人有所帮助:
路径配置没问题,我的VS2008包含文件是D:\OpenCV2.3.1\opencv\build\include
库文件是:D:\OpenCV2.3.1\opencv\build\x86\vc10\lib
爱其他的和lz一样
34楼  qq_26821641 2015-04-30 10:00发表 [回复]
挺好的资源,写的很清楚,适合初学者
33楼  GK_2014 2015-01-04 11:29发表 [回复]
楼主,我的D:\opencv\opencv\build\x86\vc10\staticlib目录下面的链接库都是XXX2410d.lib,是不是应该把你文章中添加的静态链接库的231改成2410?我试过了,还是报错:错误 1 error LNK1104: 无法打开文件“.obj” C:\Documents and Settings\gongkai\My Documents\Visual Studio 2010\Projects\hello\hello\LINK hello
32楼  robotCSDN 2014-12-06 09:59发表 [回复]
通俗易懂,真在研究哦 谢谢哈
31楼  肚皮向上的鱼 2014-11-12 15:17发表 [回复]
第一步:在我的电脑中配置OpenCV,我没有配置,为什么最后还是可以运行???求解
30楼  米菲拉拉6 2014-11-06 19:44发表 [回复]
谢谢楼主
29楼  望着位于 2014-10-29 19:34发表 [回复]
呵呵,刚问完就解决了。图片的路径应该放在根目录再下一层的项目文件夹里。如我创建的项目名为ConsoleApplication2,那么图片应该放在"D:\Studio_Projects\ConsoleApplication2\ConsoleApplication2"。
28楼  望着位于 2014-10-29 19:31发表 [回复]
楼主,还有各位朋友,想问一下,那个冲浪图片应该放在那里啊,我运行程序但只显示窗口而没有图片,请问是什么原因呢?
27楼  AcMyDream 2014-10-27 14:36发表 [回复]
终于搜到了,觉得写得还挺不错的。。我继续研究,谢谢大神
26楼  A_Opencver 2014-07-23 10:45发表 [回复]
学习了
25楼  sinat_17583651 2014-07-13 12:20发表 [回复]
大神啊 那张图片应该放到哪个路径上?? 才能显示出来啊!
24楼  qq_16149173 2014-06-28 04:29发表 [回复]
23楼  Mr钟 2014-06-15 16:52发表 [回复]
nice
22楼  jinjunweina 2014-06-06 14:03发表 [回复]
写得好!顶!
21楼  卿笃军 2014-05-06 21:01发表 [回复]
大赞博主
20楼  springontime 2014-03-10 17:18发表 [回复]
你在迅雷工作么?有什么好书给推荐一下吧,我打算在windows编程上面扎根了,碰都不想碰linux
Re:  MoreWindows 2014-03-11 13:24发表 [回复]
回复springontime:linux开源应该更合适程序员学习呀,Windows的话推荐《Windows程序设计》,《Windows核心编程》,有空多看看一些开源的代码。
Re:  springontime 2014-03-12 19:18发表 [回复]
回复MoreWindows:谢谢你的推荐,这两本书只看过一遍,都忘干净了,回头找机会重温,你的意思是指linux下的开源代码么?我不想碰linux,我现在在看我们公司的项目代码,感觉挺有搜获的。如果你在深圳迅雷,那我们公司和你们公司就隔着一条马路
19楼  237896936 2014-03-06 11:21发表 [回复]
错误提示error LNK1104: 无法打开文件“.obj” c:\Users\Acer\documents\visual studio 2010\Projects\test_op\test_op\LINK
;是哪里出问题了,帮忙看一下
Re:  237896936 2014-03-08 22:22发表 [回复]
回复zhang237896936:原来我下的opencv版本是2.4.4,所以最后的“附加依赖项”都是****244.lib,不是231了
18楼  绵羊仔 2014-01-21 14:47发表 [回复]
楼主,有木有关于ANDROID的OPENCV啊~
Re:  MoreWindows 2014-01-22 10:44发表 [回复]
回复DJY1992:没有了,不过JAVA使用OpenCV应该更加方便呀。
17楼  stereohomology 2013-10-29 07:48发表 [回复]
怎么不用预先读解压的OpenCV进行Cmake和rebuild就能安装成功啊?膜拜一下大神
Re:  MoreWindows 2013-10-29 10:36发表 [回复]
回复stereohomology:安装包不同,系统不同,所以安装策略也会不同。
16楼  favors 2013-09-22 23:06发表 [回复]
好文,正在学习,我是在VS2010里新建的工程,添加静态lib文件那里要用;号隔开了。
15楼  明歌天下 2013-09-20 14:00发表 [回复]
首先非常感谢博主的文章,可是按照你的文章配置后还是出现了问题错误 7 error LNK1120: 6 个无法解析的外部命令 E:\code\VC++\opencv\Debug\opencv.exe opencv
错误 2 error LNK2019: 无法解析的外部符号 _cvDestroyWindow,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
错误 6 error LNK2019: 无法解析的外部符号 _cvLoadImage,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
错误 5 error LNK2019: 无法解析的外部符号 _cvNamedWindow,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
错误 1 error LNK2019: 无法解析的外部符号 _cvReleaseImage,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
错误 4 error LNK2019: 无法解析的外部符号 _cvShowImage,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
错误 3 error LNK2019: 无法解析的外部符号 _cvWaitKey,该符号在函数 _main 中被引用 E:\code\VC++\opencv\opencv\opencv.obj opencv
新手折腾几天了 ,求指导!!!!
Re:  化境编程 2014-06-30 15:08发表 [回复]
回复haiming_yeyeye:你这个链接错误 楼主不是结尾处已经说了吗 添加附加依赖项把这些 opencv_calib3d231d.lib 中的数字231换成最新版本的244的就行了
Re:  一张大饼 2013-10-20 23:12发表 [回复]
回复haiming_yeyeye:我也是啊 半天搞不定 请问你搞定了吗
Re:  C_Clover 2013-11-06 23:20发表 [回复]
回复lichenprivate:你的“附加依赖项”的文件名加错了
14楼  gaoyi1234560 2013-08-25 13:41发表 [回复]
楼主威武!!
13楼  Mcclane 2013-07-25 17:57发表 [回复]
我一运行就出现The application was unable to start correctly (0*0150002). Click Ok to close the application。不知有什么办法没
Re:  tonyfd 2013-09-13 16:43发表 [回复]
回复zblovejava:我也遇到这个问题..不知道怎么办
Re:  sherry924 2015-05-25 08:42发表 [回复]
回复tonyfd:同困惑。。表示好不容易生成成功了==
12楼  moshihao 2013-04-24 12:45发表 [回复]
1>LINK : fatal error LNK1104: 无法打开文件“.obj”
请问作者这是怎么回事
11楼  不觉 2013-04-14 18:27发表 [回复]
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") 
请问一下这一句有什么用
Re:  zhuyf87 2014-09-15 11:06发表 [回复]
回复L_inYi:屏蔽控制台窗口
10楼  flying19911008 2013-03-08 22:46发表 [回复]
新手,过来学习下,啥时候讲到目标追踪的问题啊?
9楼  Travis 2013-02-18 21:22发表 [回复]
你好,请问下,我按照你的步骤添加了依赖库,可是还是报这多错误怎么回事
1>opencv_core231d.lib(persistence.obj) : error LNK2019: 无法解析的外部符号 _gzputs,该符号在函数 "void __cdecl icvPuts(struct CvFileStorage *,char const *)" (?icvPuts@@YAXPAUCvFileStorage@@PBD@Z) 中被引用
1>opencv_core231d.lib(persistence.obj) : error LNK2019: 无法解析的外部符号 _gzclose,该符号在函数 "void __cdecl icvClose(struct CvFileStorage *)" (?icvClose@@YAXPAUCvFileStorage@@@Z) 中被引用
1>opencv_core231d.lib(persistence.obj) : error LNK2019: 无法解析的外部符号 _gzopen,该符号在函数 _cvOpenFileStorage 中被引用
1>opencv_core231d.lib(persistence.obj) : error LNK2019: 无法解析的外部符号 _gzgets,该符号在函数 "char * __cdecl icvGets(struct CvFileStorage *,char *,int)" (?icvGets@@YAPADPAUCvFileStorage@@PADH@Z) 中被引用
Re:  lincuiyang 2013-03-06 23:20发表 [回复]
回复pTravis:我也遇到了这种问题,我的解决方法是在添加库文件的时候不要添加“...\x86\vc9\staticlib”这个文件,我的版本是OpenCV-2.4.4
Re:  zhao__fang 2014-06-28 12:24发表 [回复]
回复lincuiyang:大神,求救:应用程序无法正常启动??PS:按贴主的步骤与你的方法做的,编译与调试都成功。。。
Re:  明歌天下 2013-09-21 11:23发表 [回复]
回复lincuiyang:没有加“...\x86\vc9\staticlib”这个文件,仍然报错:无法解析的外部符号 _cvDestroyWindow。。。。。啊,求指导!
Re:  赫法格米 2013-11-30 20:29发表 [回复]
回复haiming_yeyeye:你问题解决了吗?
8楼  peterli_xue 2013-01-19 11:04发表 [回复]
你好,感谢博主的研究,请问一般在vs2010里面怎么查看opencv函数的源代码?
7楼  caiwj005 2012-12-14 16:19发表 [回复]
恩 不错、一会再按你的安装我试着做一下,之前自己按论坛安装的 总感觉哪里有问题 还不是很清楚——新手
6楼  Cleexiang 2012-12-08 16:48发表 [回复]
你好,您这是建的什么工程啊,本人新手,用的VS2012。
Re:  MoreWindows 2012-12-08 19:26发表 [回复]
回复Cleexiang:VS2008
5楼  程序侠小明 2012-12-05 09:45发表 [回复]
三.在VS2008中加入OpenCV中,一些加入有问题。比如mingw,bin,staticlib,他们不需要添加或者添加错了地方。
Re:  MoreWindows 2012-12-05 10:10发表 [回复]
回复guoming0000:呵呵,师兄说了全加上方便一些,不然等到出现一大堆奇怪的错误再加会浪费时间。我年底就要交大论文给导师了。
4楼  wangxiaoqin00007 2012-12-04 20:27发表 [回复]
学长,帮投票了,膜拜一下
Re:  MoreWindows 2012-12-04 21:20发表 [回复]
回复wangxiaoqin00007:呵呵,谢谢~
3楼  goodboy99199 2012-12-04 10:43发表 [回复]
这么多图示,赞一个。
2楼  hqyCoder 2012-12-03 12:32发表 [回复]
你好 你的文章讲得很不错,我想请问下,你学习 openCV 学习的是什么资料 求共享 谢谢!!
Re:  MoreWindows 2012-12-03 15:54发表 [回复]
回复huangqiyin:呵呵,我初学,直接看http://www.opencv.org.cn/forum/index.php的。
1楼  MoreWindows 2012-12-03 09:35发表 [回复] [引用] [举报]
后面还有十多篇OpenCV文章,欢迎大家收藏本系列。
Re:  卿笃军 2014-05-06 21:04发表 [回复]
回复MoreWindows:楼主真厉害。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值