OpenCV3.0 兼容VS2010与VS2013的问题
2015-08-05 14:29
218 查看
1. OpenCV3.0 基本的配置
这几天被OpeCV3.0折腾的死去活来的,主要是由于目前Visual studio 在2010 余2013之间切换。所以有的时候自己虽然配置好了,但是为了让这两个版本跑起来总是有各种各样的错误。真的让人感到非常困惑,关于配置这里就不说了,百度一下大把,而且跟2.x版本的配置几乎是一样样的。VS2013 上的配置:
包含库目录
上面的配置已完成基本就ok了。
VS2010的配置:
2. 问题的产生
举一个简单的例子来说明发生的问题,需找轮廓的函数:findcontours。<span style="font-size:14px;">void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierar- chy, int mode, int method, Point offset=Point())</span>我以为根据基本的配置,在VS2010余VS2013上面就可以同时跑起来,因为在工程属性中都配置好了,详见上图。跑同样一段代码和处理同样的一幅图片,接下来问题来了。这里要实现告诉大家,我是先使用VS2010,所以openCV3.0也就是最先应用在VS2010上面的,所以在VS2010跑的很欢,但是移植到VS2013时就出现各种奇奇怪怪的问题。
详细的问题见对比图:
VS2010中找到的轮廓点,很正确
VS2013中找到的轮廓点,要崩溃了,这么大
所以这里就直接报错了。
3. 问题的查找
想了半天也不知道错误在哪里,总怀疑自己的图像 有问题,但是查来查去没有没有看到什么名堂。这里我又仔细一边调试边查看代码,终于有提示了,真的是伟大的VS2013附体啊,不然还真的看不出来啊。
这是几个意思啊,我不是明明加入了进来了吗?哦等等,好像没有,因为这里依赖库只是加入这个几个名字,并没有加入具体的地址。而在依赖库中仅
仅要求lib文件的引用,我心想干脆直接将dll这个文件也引用下来,会不会没有问题。但是好像依然没有效果,也就是说这里不会调用dll,而且这个dll是
不会从依赖库中来调用。后来上网一查,我的个娘呢?
你的opencv配置的bin目录里面的东西,是在下面面的那个目录下面吧 C:\Windows\System32\opencv_world300d.dll
4. 问题的解决
根据上面提示就知道,只有将...\opencv\build\x86\vc12\bin文件的几个文件夹copy到C:\Windows\System32就好了。但是问题就解决了一半啊,那VS2010又不能用了,所以这个折腾啊。看来以后尽可能的用在一个平台上面跑吧。
5. 尾巴
这里需要提醒大家:据我实验的是,最新版本的openCV3.0 好像不支持VS2010,因为在build文件里面只有vc11,vc12. 也就是说仅仅支持VS2012,VS2013. 看来要放弃VS2010. 不知道有没有高手可以解决这个问题啊。或者直接在VS2010使用vc11或vc12, 这个没有试过啊,大家可以尝试一下,好像用CMake编译可以使用在VS2010,VS2008,VS2005等。
目前我使用的是openCV3.0 Beta版本是支持vs2010,vs2012,vs2013的。大家可以试试这个版本,beta版本还是比较稳定的。希望这个能够帮助到大家,这些纠结的人。
.
相关文章推荐
- Linux进程间通信
- OpenCV参考手册之Mat类详解(二)
- win7 + VS2013 出现Cannot open include file: 'SDKDDKVer.h'问题
- 探索 OpenStack 之:计量模块 Ceilometer 介绍及优化
- 修改MySQL字符编码【Linux】
- opencv在ubuntu下的安装
- 网站优化之网站结构诊断技巧
- PopupWindow简单使用
- OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)
- OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)
- Linux常用命令总结
- OpenCV2邻域和模板操作
- opencv Mat - 图像的容器
- OpenGL超级宝典visual studio 2013开发环境配置,GLTools
- linux下mysql的远程连接
- 开源项目架构分析之 -- Asterisk
- OpenGL新手框架
- 请写一个函数,实现以下功能: 字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”
- opencv打开监控录制的视频出现错误,解决办法!
- OpenCV,计算两幅图像的单应矩阵