Opencv-Markerless-AR+windows+vs2015
来源:互联网 发布:数控自动编程软件 编辑:程序博客网 时间:2024/06/11 05:52
从GitHub上下载资源https://github.com/meiroo/opencv-markerless-AR
但是从这个网址上下载的资源好像有错误,故我又从GitHub上下载了另外一份资源https://github.com/takmin/OpenCV-Marker-less-AR
我将这一份的src替换了上一个重复的内容(因为之前库没配好,所以具体有什么样子的错误我不知道)
打开src中的install.txt可以看到这个demo需要
1.opencv,我的是2.4.13,安装好就可以了
2.GLUT3.7.6,我并没有安装这个库,直接从网上下载了一份包含动态链接库和头文件的glutdlls37beta.zip,
然后将压缩包内的glut.h放到.../Microsoft Visual Studio/VC98/Include/GL目录下
将glut32.lib放到.../Microsoft Visual Studio/VC98/Lib目录下
将glut32.dll放到X:/windows/systom32目录下(win98用户放到X:/windows/systom目录下)
具体的可以见http://blog.csdn.net/popkiler/article/details/1754276。
这样就配置好了。
3.GLMetaseq,这边说它需要libpng和zlib,因为我的opencv是通过cmake安装的,所以源码安装的我不清楚,但是我这样安装是没有把这两个库安装好的。所以我又在网上找libpng和zlib的安装方法。libpng需要使用zlib这个库,所以先安装zlib。
zlib 下载地址http://download.chinaunix.net/download.php?id=40893&ResourceID=12241
按照http://blog.csdn.net/jinxinliu1/article/details/42423035这个方法
本文主要介绍在Windows 7 64bit操作系统下,利用Visual Studio 2010,如何安装,生成,并使用zlib 1.2.5。
(1). 首先,使用Visual Studio 2010编译生成zlib 1.2.5版本的静态和动态链接库。
(2). 然后,通过加载静态链接库zlibstat.lib,实现对简单txt文档的压缩与解压缩。
(3). 最后,通过调用动态链接库zlibwapi.lib,实现对简单txt文档的压缩与解压缩。
1. 使用Visual Studio 2010编译生成zlib 1.2.5版本
在工具栏中将“解决方案平台”改为“x64”,编译即可
注意:如果出现zlibvc.def(4): fatal error LNK1118: “VERSION”语句中的语法错误,将VERSION删除再编译一次即可!
如果出现 VS2012:error LNK2026: 模块对于 SAFESEH 映像是不安全的
解决方法:打开该项目的“属性页”对话框-->单击“链接器”节点-->单击“命令行”属性页-->将 /SAFESEH:NO 键入“附加选项”框中,然后点击应
2. 通过加载静态链接库zlibstat.lib使用zlib
3. 通过加载动态链接库zlibwapi.lib使用zlib
4. 测试
参考文献
http://www.helyar.net/2010/compiling-zlib-lib-on-windows/
http://forum.filezilla-project.org/viewtopic.php?f=3&t=7493
http://topic.csdn.net/u/20100711/19/4a3f45e9-b743-48d1-abac-f8e6d493f330.html
http://blog.sina.com.cn/s/blog_5325b5f90100rvbl.html
64位的zlib文件(我之前没有实践,多谢某王啊)按照下面的方式。。。。
此处可参照http://www.cnblogs.com/MrOuqs/p/5751485.html
使用visual studio ide进行编译
PS.此处有些教程包括x86编译,也会重复去执行类似到masmx64执行bld_ml64.bat的工作,然后拷贝到根目录后再打开visualstudio,其实这些也是不需要的工作,因为IDE的工作其实就是再背后悄悄的执行Makefile里面的编译链接工作,只不过不那么直观的展示给你看而已。
1、打开E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11,双击zlibvc.sln,Visual Studio 2015就会将其打开,但是这个sln是用vs2012创建的,所以会弹窗提示,需要更新相关的文件配置如图,点击确定即可
2、接下来吧菜单栏中的输出平台选择位x64,右键点击zlibvc,在弹出菜单中点击build,就会开始报错如下
Severity Code Description Project File Line Suppression State
Error MSB3073 The command "cd ..\..\contrib\masmx64
bld_ml64.bat
:VCEnd" exited with code 9009. zlibvc C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets 123
这个错误的产生鞥是来自生成时间中的预生成事件,因为无法准确的通过路径找到bat文件执行
3、解决方法如下:右键点击zlibvc,在弹出菜单中选择Properties(属性),在弹出的属性对话框选择Build Event(生成事件),点击Pre-Build Event(预先生成事件),会看到Command Line(命令行)中有错误提示所示的命令行,在这里我们对其进行修改,点击命令旁边的下拉按钮,然后点击edit(编辑),把内容删掉,替换如下:(此处的内容可参照命令行方式)
E:
cd E:\zlib128\zlib-1.2.8\contrib\masmx64
bld_ml64.bat
注意此处就是执行生成inffasx64.obj和gvmat64.obj的工作,因为再IDE中没有去链接asm,就会以来预先时间执行脚本生成,看看bld_ml64.bat脚本内容就会明白,他们会在本目录下生成对应的lst文件和obj,其他的拷贝链接工作IDE会在背后完成,如下
ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
ml64.exe /Flgvmat64 /c /Zi gvmat64.asm
添加号之后取人关闭,然后重新执行第二步进行编译,发现已经开始正常的编译了,但是后面又报了个错如下,只需要双击错误,就会自动打开一个.def文件,将Verson一行的1.2.8改为1.28,然后保存
Severity Code Description Project File Line Suppression State
Error LNK1118 syntax error in
'VERSION'
statement zlibvc E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\zlibvc.def 4
重新执行第二部操作进行编译,此时就会提示成功的消息,如下
1>------ Build started: Project: zlibvc, Configuration: Debug x64 ------
1> Microsoft (R) Macro Assembler (x64) Version 14.00.24210.0
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> Assembling: inffasx64.asm
1> Assembling: gvmat64.asm
1> Microsoft (R) Macro Assembler (x64) Version 14.00.24210.0
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> Creating library x64\ZlibDllDebug\zlibwapi.lib and object x64\ZlibDllDebug\zlibwapi.
exp
1> zlibvc.vcxproj -> E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\x64\ZlibDllDebug\zlibwapi.dll
1> zlibvc.vcxproj -> x64\ZlibDllDebug\zlibwapi.pdb (Full PDB)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
在E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\x64\ZlibDllDebug目录下就会出现对应的输出文件,如图
至此,所有的编译工作完成。
libpng 一定要下载对资源,我之前好了好多其他版本的,都不对,最后找到1.2.37版本的,就对了。这个安装过程参考http://www.360doc.com/content/13/0311/09/3972394_270725627.shtml
但是我的一直做不对,最后直接把其他工程都删去了,只留下了一个libpng,并且在LIB Debug|win32中加入zlib的静态模式属性表,最后才成功了,生成libpngd.lib,因为后面demo跑的时候需要libpng.lib,故这个时候应该把LIB Release模式也跑一遍,生成libpng.lib。(zlib只有动态和静态的区别,故加属性表的时候和LIB Debug加同一个就可以了)
将libpngd.lib和libpng.lib以及png.h pngconf.h放到同一个文件夹中。
使用时,包含头文件: 属性-C/C++--常规--附加包含目录:上一个文件夹
包含.lib文件所在的目录:属性--连接器--常规--附加库目录
包含.lib文件: 属性--连接器--常规--附加依赖项(libpngd.lib和libpng.lib)
因为它需要zlib库,故需要加上zlib库的属性表。
4.创建一个新工程,我直接使用的AR.sln,并没有新建。
5.这边需要多说一句,这个需要Google test这个库,幸亏这个库容易安装,故没有泪崩啊。。。。
参考http://blog.csdn.net/officercat/article/details/39621423
首先下载google test,http://code.google.com/p/googletest/可以下载到最新版,当然这个网站经常被屏蔽,所以可以直接到其他网站下一个源代码压缩包,现在基本上gtest-1.6版是够用的,下载下来后,放到一个合适的位置,这里面的源文件在编译器中需要被引用到。
可以看到源代码文件夹里,有适应各种操作系统的编译脚本或者工程文件,比如cmake,make,msvc, msvc文件夹里就是一个支持visual studio的solution文件
打开gtest.sln,如果有需要,visual studio会自动升级我用的是visu studio 2012),可以发现里面有几个项目,其中gtest和gtest_main的产出是对google test编写有用的。
然后编译,会发现报错
error C2977 "std::tuple" too many template arguments
解决方法就是在每隔工程(project)的属性中的C++ --> Preprocessor (预处理)--> preprocessor defination (预处理定义)中增加
_VARIADIC_MAX=10
然后编译通过,debug和release都编译一遍,把编译出的gtest.lib,gtestd.lib, gtest_main.lib, gtest_maind.lib 都放到gtest根目录的lib文件夹下(lib和include位于同一级)。
因为要用到gtest里的库,所以要增加对头文件和库的搜索路径,VC里有很多地方可以配置,我选择在项目属性--> C++-->General-->additional include Directories 里增加
$(GTEST)\include
在项目属性--> Linker-->General-->additional Library Directories 里增加
$(GTEST)\lib
在项目属性--> Linker-->Input-->additional Dependencies 里增加 gtest的lib,
如果是release设置,用gtest.lib,gtestd.lib; ruguoshidebug设置,用 gtest_main.lib, gtest_maind.lib。
故AR中需要加入gtest、Opencv、libpng、zlib这四个库的属性表,加好以后,库就配置好了。
加好库以后,会出现以下错误,!=属性不匹配,这时应该把ifs!=NULL改为!ifs,这样错误就会消失了,哈哈哈,但是不要太高兴哦,因为后面还有别的问题呢。。。。
这应该把C/C++--代码生成--运行库由多线程调试DLL改为多线程调试(MTd),这样很多问题就迎刃而解了,但是会出现一个新的小问题,
将msvcrtd.lib加入附加依赖项就可以了,是不是很完美,O(∩_∩)O哈哈哈~
但是运行的时候回提示没有opencv_core249d等一系列问题,这是因为附加依赖项中不应该有这些,因为我使用的是2.4.13版本啊,删去这些库,
生成的时候不会有错。
但是运行的时候会出现新的错误“无法定位程序输入点_glutInitWithExit 于动态链接库。。。。exe”这是因为这个工程自动调用了include里面的glut.h想要改正这个问题,将附加包含目录中的include删去就可以了,生成。。。运行。。。。就会看见摄像头成功打开了,是不是很有成就感????
为了配好这几个库,我使用了整整一天的时间,各种问题,各种解决啊,真的有一种刚翻过一座山,又来一座更大的山的感觉啊,
仅此记录一下,方便他人,方便自己。
- Opencv-Markerless-AR+windows+vs2015
- Mastering Opencv ch3: markerless AR(一)
- Mastering Opencv ch3: markerless AR(二)
- Mastering Opencv ch3: markerless AR(三)
- windows 下VS2015配置opencv
- VS2015+OpenCV-2.4.10配置AR(增强现实)开发环境
- Windows 正确安装OpenCV及使用(CMake+VS2015)
- ios--OpenCV--AR可视化
- 【OpenCV】OpenCV+VS2015环境配置
- 为vs2015配置opencv
- VS2015编译opencv
- OpenCV+VS2015+Win10
- vs2015配置opencv
- win10 vs2015 opencv编译
- VS2015+Qt+Opencv程序
- Windows下 OpenCV 3.2配置和在VS2015下的简单demo
- XGBoost-安装(Windows/VS2015)
- thrift windows vs2015编译
- ztree插件使用实例
- 对一次微信升级事件的自我反省:思维方式决定解决问题能力
- c++对象内存的分配
- influxDB v0.11 集群配置
- NLPCC 2016 QA评测数据集
- Opencv-Markerless-AR+windows+vs2015
- GCC toplev 定义
- HTML 5 学习第二课
- 【Java】使用循环输出等腰三角形。例如给定4
- OGG-01635 BOUNDED RECOVERY: reset to initial or altered checkpoint
- RxPermission使用
- kettle常用组件
- 马尔可夫决策过程MDP
- 快速幂