




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档CMake编译Opencv自带源码及程序形成工程并运行教程本教程基于声明:纯粹阅历之谈,重点是解决问题,若有理解错误,请多包涵始终很想直接打开运行opencv自带的示例程序,或者看看里面一些函数的源码,奈何opencv库里面给出的都是源文件,直接打开不能运行,没有编译形成VS中的工程方案,所以要看时,只得自己新建工程,然后复制过去,先不说麻烦,就算真弄过去了,还不肯定能运行,由于它还可能有依靠项什么的问题(猜的),总之不肯定能够顺当运行。后来听说可以用CMake对其进行编译,可以形成VS中的工程方案,然后直接就可以打开运行了,这当然便利多了,于是就有了下面的东西1 下载及安装CMake
2、在写本教程的时候,CMake最新版本为CMake3.4.1,下载网址为:/download/,CMake 有很多的发行版本,具体有哪些,作为一个小白,也不懂什么,只是知道其中有分source和binary两种版本,前面的那个版本貌似是对应源码版本,也就是给的是CMake的源码,假如我们要用它去编译其他如opencv的源码,那得先编译CMake的source文件,然后还要写CMakeList.txt(相当于是通过编程来实现编译其他文件,本人这么理解,若有误,莫怪),这么简单,对我来说,确定不想要;因此,我选择了binary版本(直接是二进制文件,已经编译好了,并形
3、成了可执行程序),下载之后是一个.exe文件,这个就好办多了,下载下来,点击运行一顿安装就可以了开头进入正题下面摘录一段关于CMake的介绍(摘自教程开头的网址):CMake是一个跨平台的安装(编译)工具,可以用简洁的语句来描述全部平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C 特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如Unix 的 Makefile 或 Windows Visual C 的 projects/w
4、orkspaces),然后再依一般的建构方式使用。这使得生疏某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的力量是 CMake 和 SCons 等其他类似系统的区分之处。CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的挨次建构执行档。CMake 支援 in-place 建构(二进档和源代码在同一个名目树中)和 out-of-place 建构(二进档在别的名目里),因此可以很简洁从同一个源代码名目树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。“CMake”这个名字是“Cross Platfor
5、m Make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。通过以上介绍我们知道,我们可以用CMake这个工具将源码编译成VS2010的工程文件,使得我们可以在VS下以不同项目组的形式构建多个样例或者教程工程。我们可以在CMake的官网:/cmake/resources/software.html 上找到最新版本的CMake安装文件。至于为什么选择的是win32-x86.exe,很多人或许有怀疑,我明明是x64的电脑,怎么选择这个呢,其实我也不太懂,这里只能鼓起士气说几句,假如我们略微留意点的话
6、,会发觉,我们经常建立的.cpp程序都是win32(x86)把握台应用程序是吧,我始终纳闷,为什么是这个呢?我想可能是编译器是对应这个型号的吧,这玩意好像始终到VS2013都是只有win32(x86)对应的编译器,但到了VS2015,就不一样了,即有win32对应的编译器,还有x64对应的编译器(也即向前兼容),嗯,我只能说这么多了,而且还不知道对不对,总之,本教程只是阅历之谈,涉及到的理论部分,纯粹是为了补补边,大家觉得正确就接受,有错误的话,请原谅选择文件“CMake-3.0.1-win32-x86.exe”下载,一共10.78MB,很快可以下完。下载完成后,双击安装程序,即可开头CMak
7、e的安装。安装很简洁,基本上就是“下一步”,直至最终一步“完成”。我的习惯,确定要创建桌面快捷方式了,这样便利啊当然可能不经常用,那也可以随时删发觉上面这个图没有,CMake好强大,自动识别并列出你有的一些程序,当然有你的VS了安装完成后,可以在“开头”菜单中找到已经安装好的CMake3.0.1程序的快捷方式"CMake (cmake-gui)"。当然,之前已经有选择创建快捷方式,安装之后,桌面上就有快捷方式。安装好了以后,下面开头进行OpenCV源码的编译。2 OpenCV2.4.9源码编译这里假设我们已经将OpenCV2.4.9的源码下载并且安装好了。(假如这一步不知道
8、怎么做,请参看本人另一个教程学习OpenCV的学习笔记系列(一)环境配置)。(这是原网友的话,我之前也写过一个关于各Opencv与各版本VS配置的教程,可以在百度文库搜寻OpenCV在Visual Studio中的属性表配置方法(通用),如下图示。在“开头”菜单中点击“CMake (cmake-gui)”,打开CMake程序,此时将弹出编译设置界面。如下图所示。在"Where is the source code"选项的文本框中输入OpenCV源码所在的名目路径(opencv文件提取的位置),可以点击"Browse Source"选择文件夹,请依据源码安
9、装的实际位置选择路径,此处选择的是"H:/opencv/sources"。在"Where to build the binaries"选项的文本框中输入需要构建样例工程及源码的文件名目路径,此处选择的是与源码同一文件夹下的"H:/OpenCV/Solution"。输入完源码路径及生成路径之后,点击编译设置界面左下角的"Configure"按钮。假如是第一次配置,那么将会弹出一个选择生成工程目标环境的界面,此处选择“Visual Studio 10 2010”选项,勾选"Use default native
10、 compilers",然后点击"Finish"按钮。由于我使用的是VS2010,而且与opencv配置的也只有VS2010。假如生成目标名目路径不存在,那么会有一个提示新建名目的对话框,如下图所示,直接点"Yes"即可。第一次配置会消灭很多红色的选项,别管它,再点击一次"Configure"按钮。这一次,红色选项没有了,说明没有问题了,配置完成。点击"Generate"按钮在看到最下方有"Generating done"字样后,说明源码工程编译完毕。3 OpenCV2.4.9源码工程
11、测试打开上一步设置的生成名目路径下的文件夹,可见有一个"Solution"文件夹,这个是上一步设置中自动生成的,双击该文件夹。在"H:/opencv/Solution"路径下,我们可以看到有一个已经编译生成好了的VS2010工程文件"OpenCV.sln",双击该文件,既可以在VS2010中打开该工程文件。在打开的"OpenCV"工程中,我们可以看到有68个项目。右键点击OpenCV解决方案,选择生成解决方案。编译用时较长,我的PC配置算是比较好的,但是编译也一共耗时约2分钟左右,生成62个工程,失败0个,说明全部
12、编译通过。恭喜自己一下!接下来,就可以逐个工程去查看,编译了。关于这些样例工程及源码的解释,后续将补充。(这话是原作者说的不是我说的啊)4 OpenCV2.4.9自带样例源码编译及测试以上介绍的是OpenCV的源码编译及工程,下面介绍怎么编译OpenCV自带的样例源码及工程。熟门熟路地打开CMake3.0.1,将源码路径改为:"H:/opencv/sources/samples"(具体路径随安装位置而不同,在opencv的源码安装名目下可以找到“sample”文件夹)。在一通配置(Configure)及生成(Generate)后(配置项同上,此处不赘述!),在目标名目下,可
13、以找到已经生成好了的OpenCV的样例工程文件:“samples.sln”点击打开"samples.sln",看到解决方案资源管理器中显示一共有172个项目(样例真多,好好看哈!)右键点击解决方案,选择“生成解决方案”或许一分钟左右(不同机器配置,编译时间有差别),编译完成,工程生成171个工程,失败0个,一次编译通过,点个赞!整体编译无误后,顺手打开一个样例工程,本文选择“(EXAMPLE) lkdemo”工程。此工程源码使用改进的Lucas-Kanade光流算法,用于检测视频运动目标。用鼠标点击目标点,可视频跟踪。点击运行,发觉一个命令行界面一闪而过,之后就退出了,这是
14、为什么呢?通过单步运行调试发觉,在“lkdemo.cpp”文件的56行的"if( !cap.isOpened() );"推断语句中,播放器没有打开,直接在把握台显示一行“Couldnot initialize capturing”就退出了。分析其缘由,是由于“cap.open("Megamind.avi");”这个语句中的视频文件“Megamind.avi”不在程序名目下。知道缘由,就好解决了!在“H:opencvsourcessamplescpp”名目下(源码文件名目)拷贝“Megamind.avi”文件至“H:opencvsampleSolution
15、cppDebug”名目下(此乃程序“cpp-example-lkdemo.exe”所在名目)。换句话说,就是要确保在程序运行的名目下有“Megamind.avi”文件即可。在做完以上工作后,再次点击运行,就成功运行了,播放的是一个动画片,在画面的一处点击左键后,会有一个绿色的标记点,该标记点的位置会随着四周物体的运动而转变,这应当就是所谓的视频跟踪了。截图如下: OK,这其中的原理及工作流程我就不介绍了,自己看源码,其他样例工程的源码可以一个个去看,然后编译运行,信任将这些样例都生疏理解摸透后,OpenCV对你将不再生疏。欢迎你步入OpenCV的殿堂,开头你的学习阶段吧!以上的内容大大部分都是
16、来自文章开头的网址,不得不说,这位网友真心啊,写的太具体了,我粘贴都粘贴了半天,这里再次表示感谢,也鼓舞大家去原网址看看接下来的,是我要说的重点,可能大家发觉了,前面的步骤是不是格外顺当,不知道你依据上面来,是不是也这么顺当,总之,我是消灭了各种问题,当然假如你已经顺当了,就不用看下面的了5 各种问题5.1 Opencv版本问题原作者使用的是opencv2.4.9,本人使用的是opencv2.4.11,且我使用的CMake也不是3.0.1,而是3.4.1,这些可能带来一些差异,具体不知道,只是有一个是去确定的,在opencv2.4.11中,lkdemo.cpp做了些改动,它不再使用Megami
17、nd.avi了,而是直接调用你的电脑摄像头,因此,不知道其他版本的又是怎样,总之,列些这条就是想申明一点,可能有这些差异。5.2 编译sample出问题在第4章中,利用CMake编译opencv自带的示例程序,其实原作者写的再具体不过了,但是我就是消灭了一些问题,几经百度,最终解决了,问题如下:选择完文件夹之后,点击configure,半途跳出出错提示框(当时没有准时截图,真是失败),然后我在下面的提示框(就是下图下方的提示框)中找,里面有一段红色的文字描写消灭的错误,请原谅当时一心想着解决问题,并没截图,总之问题是(当时用这个搜寻的):CMake Error at CMakeLists.tx
18、t:40 (find_package): ,还有几句话说的更具体,说什么CMake找不到OpenCVConfig.cmake之类的,问题的具体表现是,下图中红色圈起来的值为空。(虽没截图,这样描述或许清楚了,红色圈起部分原先为空,截的图是我解决之后截的,因此有值)几经尝试,还是configure失败,最终,让我在网上搜到了,这里给出网址:不得不说,这人是个牛人啊,我马上反应到CMake的搜寻路径里,可能没有包含OpenCVConfig.cmake的路径,于是在上图中红色方框里,对OpenCV_DIR进行了赋值,OpenCVConfig.cmake所在的地方,上面的牛人说了,在opencvbui
19、ldx86vc10lib(留意这里是我的是vs2010,因此选择的vc10,假如还是出错,有可能是不是vs2010造成,要选其他的(猜想)如下图示, 留意不要点击上图中的add entry新建一个环境变量,CMake了已经有了环境变量Opencv_DIR。然后在点击configure,天呐,成功了,此刻的我心情一顿感动,再点击generate,也没有问题,真真是乐坏了啊5.3 运行lkdemo.cpp问题满以为,编译完sample之后,打开生成的samples.sln文件之后,并按第4章讲的,形成解决方案之后,就可以尽情玩耍了,可以任意运行里面的例子了,没曾想到,我一运行,就跳出或者是这个:此
20、刻,我的心情是崩溃的,由于为解决5.2中的问题我已经很烦了,紧接着又来这么个问题,但还是静下心来解决他,到底我想运行里面的示例程序啊几经百度,牛人真的是有啊,给出网址: (有没有留意,和5.2给出的网址是同一个论坛上的,看样子这个论坛很有价值啊)我搜寻用的关键字是:unable to start program all_build。这位牛人给出的关键性回答如下:看到点赞的人数竟然有35之多,看样子遇到这个问题的人还不少,同时反映出这个牛人给的方法是好的。我的理解是,由于sample里面有很多的示例程序,在经过CMake编译之后,我们再到VS2010界面形成解决方案,这个解决方案是一个总的解决方
21、案,每个示例程序都是其中的一个工程(一个方案下可以有多个工程,一个工程下有很多的源文件),但是这么多工程放在一起,你任凭挑一个工程,比如打开其源文件,点运行,那么就有问题了。这么多工程在同一个方案下,凭什么点运行就是运行lkdemo工程呢,就由于你打开了其源文件吗?明显不是,牛人这样说的:Guessing from the information I have, you're not actually compiling the program, but trying to run it. That is, BUILD_ALL is set as your startup projec
22、t. (It should be in a bold font, unlike the other projects in your solution) If you then try to run/debug, you will get the error you describe, because there is simply nothing to run,或许的意思是,这些文件并没有真正的被编译,你直接想去运行当然要出错了,消灭“Unable to start program 'D:Program FilesEXPMyProject-binDebugALL_BUILD”这个错误
23、是由于你将BUILD_ALL工程设置为启动工程,这个工程在全部列出工程的最下面或许你看出来了,上面提到的另一种错误形式是关于INSTALL的,没错,也就是你设置了INSTALL为整个方案的启动工程了,这两个工程,其实都是没有真正编译形成.exe文件的,因此不能作为启动工程,可以找到samples.sln文件所在文件夹中的debug文件夹是空的,如下图示而正常来说,编译完之后里面有对应工程的.exe文件才是,不信你可以看看你以前建立的工程文件。牛人的其次句话就更牛了: The project is most likely generated via CMAKE and included in your Visual Studio solution. Set any of the projects that do generate a .exe as the startup project (by right-clicking on the project and selecting "set as startup project") and you will most likely will b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 授权合同范本
- SGLT1-2-IN-8-生命科学试剂-MCE
- 4-Bromoethcathinone-hydrochloride-生命科学试剂-MCE
- 1-2-3-Trinervonoyl-glycerol-生命科学试剂-MCE
- 养殖承揽合同范本
- 国家装修延期合同范本
- 婴儿车企业数字化转型与智慧升级战略研究报告
- 天然皮革大衣企业ESG实践与创新战略研究报告
- 中药材新药行业深度调研及发展战略咨询报告
- 养殖水蛭合同范本
- Unit5 What day is it today?(教学设计)-2023-2024学年教科版(广州)英语四年级下册
- 影视制作项目委托制作协议
- 植物角创设培训
- 人教版小学数学一年级下册教案
- 《住院患者身体约束的护理》团体标准解读课件
- 新版人音版小学音乐一年级下册全册教案
- 2024年黑龙江建筑职业技术学院单招职业适应性测试题库全面
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- 广东海洋大学毕业论文格式及模板
- 高空作业安全经验分享PPT课件
- 广东某铁路站前工程施工防洪度汛施工方案(附示意图)
评论
0/150
提交评论