现在的位置: 首页 > 综合 > 正文

初用vs2010+opencv2.3.1

2013年07月22日 ⁄ 综合 ⁄ 共 1976字 ⁄ 字号 评论关闭

 

1.       环境配置:

首先安装环境vs和opencv,我安装的是vs2010旗舰版和opencv2.3.1最新版本,xp系统。其具体安装方法参考的是网页:http://hi.baidu.com/mvp_xuan/blog/item/eab5ecd2f6f1fbc5a8ec9a02.html

该网页的博主还是相当给力的。很多网友问他的问题他都认真解决,甚是佩服。

2.       编译代码:

打算运行opencv中文论坛中的摄像头定标程序,见网址:http://www.opencv.org.cn/index.php/%E6%91%84%E5%83%8F%E5%A4%B4%E6%A0%87%E5%AE%9A

建立工程后,开始编译calibration.cpp文件,可是出现了fatal error C1083: Cannot open precompiled header file: 'calibration.pch'的错误提示。在网上查了相关资料,是与预编译方面有关,因为calibration.cpp代码中包含了头文件stdafx.h,所以需要先编译stdafx.cpp文件,直接双击stdafx.cpp文件,Ctrl+F7先编译这个,然后双击calibraiton.cpp文件,编译通过,ok!

3.       链接代码:

开始用F7链接代码了,本以为一帆风顺,没想到出现错误:

因为我按照第1步已经能成功显示图片了,就以为opencv的环境配置好了,当时在属性页”(“配置”==“Debug”)->“配置属性”->“链接器”->“输入”->“附加依赖库,还有属性页”(“配置”==“Release”)->“配置属性”->“链接器”->“输入”->“附加依赖库中的库文件少了个opencv_calib3d231d.lib和opencv_calib3d231.lib,因为这个例子是需要用到摄像头定标的。所以不要以为第1步那几个库就完全了,还要看具体情况而定。最好是把所以的库都列好房子一个记事本中,每次新建工程时直接复制到附加依赖库中,省事。

再次链接,只剩下一个错误提示了:无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用。解决方法参考网上:http://apps.hi.baidu.com/share/detail/17036661。也就是在属性页中的左边栏中依次选择:Configuration Properties->C/C++->Preprocessor,然后在右边栏的Preprocessor
Definitions对应的项中删除_WINDOWS, 添加_CONSOLE.

另外在左边栏中依次选择:Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为CONSOLE(/SUBSYSTEM:CONSOLE)。终于链接成功了。

4.       运行代码:

   没想到运行代码时又出现了错误提示:

 

网上搜了很久,参考http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=15046 找到了我的解决方法:

到网站http://www.threadingbuildingblocks.org/ ... ss_win.zip下载TBB3.0,解压到一个目录,比如我的解压目录为C:\Program Files\opencv2.3.1\TBB3.0,然后配置环境变量PATH,在原来opencv配置好的基础上增加加一个环境变量值为C:\Program
Files\opencv2.3.1\TBB3.0\bin\ia32\vc10。(也就是说一个PATH对应两个值)注意前面要有分号隔开,并且此处的环境变量一定要达到vc10目录,因为按照网上的方法到bin目录是不行的。重启或注销计算机运行程序就ok了。

5.       调试代码:

没想到过了1s又出现错误提示:

网上说这个错误是随机发生的,难怪在同学电脑那里又正确。我这边几乎没成功过。网上一部分人说是因为多线程同时读取一个数据出现的。哥晕了,我可没那么深的功底去研究啊。不过还是单步调试跟踪了很久。发现是在cvCopy函数附近出现错误的。调试时的出现的错误提示为:

错误提示一直显示是cvCopy参数不对,可是没有错啊,况且别人的电脑又可以。真服了。

6.       换工程代码:

    实在没有办法,后面改用opencv2.3.1自带的calibration.cpp代码,把opencv所以的库文件都添加到附加依赖库中。编译,链接,运行成功到底!还是自带的代码牛。

7.       总结:

    刚接触这家伙,就搞死人。看来技术不是那么容易的,看着简单,其实也挺不容易的。只能慢慢积累经验了。

 

 

抱歉!评论已关闭.