编译opencv3.2时遇到的问题(VS2015)

本文主要是回顾准备编译、编译过程中的感想,并没有详细的专业教程提供。
事情开始于做opencv官网一个tutorial——Image Watch: viewing in-memory images in the Visual Studio debugger(自己去找一下吧,写博文的时候opencv官网一些页面打不开),要利用VS调试器+ImageWatch插件对图片的相关细节进行查看。我的opencv库是自己下载下来解压的,之前做其他tutorials时感觉还算满意,心想就这样一直做下去。谁曾想半路杀出个程咬金,把我对这个库的美好印象给破坏了。

调试无法通过,无法调出这个ImageWatch,报错信息是类似“…could not open…pdb file”,就是缺少相应的pdb文件。

在经过一番搜索之后,终于了解到pdb文件大概就是在编译过程中产生的文件,其实在编译这个tutorial的项目时也产生了一个对应的pdb文件,然而查遍opencv文件夹都没有找到这样的文件。额。。。。有网友说,出现这样的信息可以直接忽略,能正常运行就可以。这样的话不就是说要放弃调试了?其实我心有不甘啊。

经过一番挣扎,我决定自己编译一个opencv库。挣扎是因为我没有编译像opencv这样的大型代码的经验,过程中肯定会遇到很多预料不到、甚至解决不了的问题。更何况我只是业余的计算机爱好者,基础有的要补。

我主要参考官网里面那个Installation by Making Your Own Libraries from the Source Files教程,也就这个写的最详细了,虽然就是有点旧,还是2.x版本,VS是2010版。
按照它的要求,准备了各种第三方库,也不是全部,有些是收费软件就不要了,有些是链接不到,像OpenNi直接转到苹果官网去了,坑。。。(最后证明它确实是个坑)
版本不一样,很多东西都不一样了,只能是步步为营了。有些第三方软件很大,例如编译Qt5.8,由于硬盘分区本来就小,差点给它爆盘,还好我使用各种腾挪战术化险为夷,这个倒是好编译,照着README步骤来,opencv那个编译教程也有介绍怎么编译qt,只是它是旧版本,跟5.8版本还是差别挺大的,直接的不同就是编译出来的东西的文件夹格局不一样。令人疑惑的是编译之后的一级目录没有bin文件夹(在行的人知道怎么回事吗?)。而opencv教程要为qt设置环境变量和系统路径,这就不好了。我只能是按自己的想法来,找了一个最大的文件夹qtbase,在里面确实找到一些bin、lib、include之类的文件夹。这个就算搞定了(后来CMake的时候,能检测到Qt)。

一些比较容易、比较小的库就不介绍了。

就像刚才提到的,OpenNi就不好解决,虽然在GitHub上有OpenNi源码,也有OpenNI Primesense sensor module源码。这两个代码包里的编译方式都是要执行一个py脚本,就是这两个脚本一直不能通过,老是报错,而且它们都是同样的错误,类似无法找到指定文件、无法获取注册值。。。,如下图,
这里写图片描述

我又开始大海捞针搜索解决办法,也找到一些可执行文件版本,试了下直接安装,CMake可以搜索到OpenNI1.5,就差openni primesense sensor module,总是解决不了。这个论坛上一个网友说openni、PrimeSense sensor module都要从源码安装我想也是吧,源码安装才有bin、lib、include那些东西?但是那个python报错确实无法解决。

在网上徘徊的时候找到这篇文章,里面提到一个细节,如下图
这里写图片描述
也就是OpenNI1.5源码可能含有不支持VS2010之后版本编译器的代码。文章说要注释掉那段代码,但是我还没有尝试。为什么?原因有几个。在这之前,其实在做完前面的准备后,我已经编译了一次opencv,包括rebug和release版本。每个版本都要花上四五个小时(不知道是不是因为我选的那些第三方库太多、太大了),我都是趁着晚上这段时间人在的时候让它编译,好看着,笔记本发热。编译是通过了,但是有warnings和errors,如下图,
这里写图片描述

虽然是编译出东西来了,也有pdb文件了,但是这数不清的警告,让人对这些库的有效性生疑,以及bin文件里的文件感觉跟别人编译的不一样,没别人全,可以对比一下,下面上图是网上人家上传的库,下图是我编译的,当然还有版本不一样,这应该不要紧。
这里写图片描述
——————————————
这里写图片描述
明显就少了好多东西啊。不知道是不是因为少了OpenNI1.5以及它的sensor module,很有可能。

好了,过去差不多一个星期,每个晚上都花在编译OpenCV库上了,没有专业的指导,最终也没有做出什么成果。
值得一提的是,在编译完之后,我又单独编译了OpenCV源码中的“测试代码”(这是我在搜索的时候get到的技能,打开工程(项目)属性,在配置属性里面可以查看要编译的项目,有些项目是默认打上勾的,只有install、install-docs和tests这几个工程没有,它们应该不参与最初的编译,只是参与后处理过程),就是项目名字含有test的,这应该是用来测试编译成功与否的吧,结果返回错误,表示无法open file opencvhighui…。

熬了几天夜,感觉身体被掏空,脖子背部都很酸。。。

我还是继续使用官网的opencv库吧,等实力够了再回归这里。

发布了6 篇原创文章 · 获赞 6 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章