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

一个系统中同时使用VC6.0+OpenCV1.0和VS2005+OpenCV2.0的方法

2013年08月21日 ⁄ 综合 ⁄ 共 2105字 ⁄ 字号 评论关闭

以前用的是VC6.0+OpenCV1.0的组合,一直用的很好。一般的图像处理算法都可以实现,现在突然想搞一下立体视觉方面的东西,查看了OpenCV的手册,发现立体视觉上的大部分函数只有OpenCV1.0以上版本才有。于是乎准备鸟枪换炮上OpenCV2.0,一查资料,发现OpenCV2.0不能再VC6.0下跑,于是乎只好装VS2005,但是又怕装了以后和原来的VC6.0冲突,导致以前的工程都不能用。上网查了资料说装在不同路径下是没问题的。于是大胆安装在其他目录下,装好后果然不冲突,看来只要路径不同就没问题,微软的工程师也不是菜鸟啊。接下来搞定OpenCV2.0,我想在能用原来1.0版本的情况下也可以用2.0的版本,于是将OpenCV2.0装在了和原来版本不同的目录下,装完Ok,没有问题。接下来是配置。OpenCV2.0的配置没有原来1.0的简单,需要自己下载CMAKE来产生需要的dlllib文件。一下参考了一篇帖子如下。

1.Opencv2.0下载地址:
http://www.opencv.org.cn/index.php/Download
安装时选择默认路径,安装后检查C:/OpenCV2.0/bin
是否已经被加入到环境变量PATH,如果没有,请加入。

加入后需要注销当前Windows用户(或重启)后重新登陆才生效。
2.
配置IDE,打开VS2005,选择菜单:Tools -> Options,在弹出窗口中选择

Projects and Solutions -> VC++ Directories
首先,从“Show Directories for”list box中选择“Include files”
添加路径“C:/OpenCV2.0/include/opencv”
3.
添加库文件(library files),需要下载CMAKE,用来生产所需的库文件,cmake下载地址:

http://www.cmake.org/cmake/resources/software.html
打开cmake-gui。在第一个路径处选择opencv的安装路径,记得是CMakeLists.txt所在的那个路径。
第二个路径是 make得到的工程保存位置。
点击Configure并选择合适的编译器。选择完编译器之后需点击Configure两次,

最后点击Generate生成我们想要的工程文件(.lib  .dll)。
4.
打开make得到的工程保存位置中的OpenCV.sln文件,build solution后在工程目录下得到binlib的文件夹,

bin/debug中的.dll文件复制到C:/OpenCV2.0/bin,将lib/debug中的.lib文件复制到C:/OpenCV2.0/lib
5.
添加库文件(library files),选择菜单:Tools -> Options,在弹出窗口中

选择Projects and Solutions -> VC++ Directories,首先,从“Show Directories for”list box
选择“Library files”,添加路径“C:/OpenCV2.0/lib”。选择“source files”
添加路径“C:/OpenCV2.0/src/cv”“C:/OpenCV2.0/src/cvaux”
C:/OpenCV2.0/src/cxcore”
“C:/OpenCV2.0/src/highgui”“C:/OpenCV2.0/src/ml”

6.
建立project后要设置项目所需要的lib

选择菜单Project -> Properties -> Configuration Properties -> Linker -> Input
additional dependencies中加入cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib等需要的库。
注意加入的库文件要和第3步生成的文件名一致,假如在第3步中选择VS2005的编译器时,
生成的文件名含有200d(不知道其他的编译器会不会),此时加入的库文件应该
cxcore200d.lib cv200d.lib ml200d.lib cvaux200d.lib highgui200d.lib
每次新建一个project都要添加项目所需的lib

按上面的提示配置完后拷贝了以OpenCV中文论坛上的2.0版本的helloworld程序,发现有fatal error C1010: unexpected end of file while looking的错误, 查了下是预编译头的问题,解决方法是在设置那C/C++Category的选项框选择Precompiled Headers 然后再选择Not using precompiled headers,这样再编译一下,Ok通过。运行一下,终于看到了经典的lena照片。

现在情况如下,我在VC6.0平台下使用OpenCV1.0库,在VS2005下使用OpenCV2.0库,暂时运行正常,没有冲突。写段文章总结一下,防止以后忘了,想双平台运行的朋友也可以参考一下。如有Bug出现,也希望大家提出来。

抱歉!评论已关闭.