学习OpenCV的学习笔记系列(二)源码编译及自带样例工程

下载及安装CMake3.0.1

     

要自己编译OpenCV2.4.9的源码,首先,必须下载编译工具,使用的比较多的编译工具是CMake。

下面摘录一段关于CMake的介绍:

      

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C 特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支援 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“Cross Platform Make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。


通过以上介绍我们知道,我们可以用CMake这个工具将源码编译成VS2010的工程文件,使得我们可以在VS下以不同项目组的形式构建多个样例或者教程工程。


我们可以在CMake的官网:  http://www.cmake.org/cmake/resources/software.html 上找到最新版本的CMake安装文件。



选择文件CMake-3.0.1-win32-x86.exe”下载,一共10.78MB,很快可以下完。


下载完成后,双击安装程序,即可开始CMake的安装。


安装很简单,基本上就是“下一步”,直至最后一步“完成”。















安装完成后,可以在“开始”菜单中找到已经安装好的CMake3.0.1程序的快捷方式"CMake (cmake-gui)"


安装好了以后,下面开始进行OpenCV源码的编译。

     

     

OpenCV2.4.9源码编译


这里假设我们已经将OpenCV2.4.9的源码下载并且安装好了。(如果这一步不知道怎么做,请参看本人另一个教程《学习OpenCV的学习笔记系列(一)环境配置》)

在“开始”菜单中点击“CMake (cmake-gui)”打开CMake程序,此时将弹出编译设置界面。如下图所示


在"Where is the source code"选项的文本框中输入OpenCV源码所在的目录路径,可以点击"Browse Source..."选择文件夹,请根据源码安装的实际位置选择路径,此处选择的是"H:/opencv/sources"。


在"Where to build the binaries"选项的文本框中输入需要构建样例工程及源码的文件目录路径,此处选择的是与源码同一文件夹下的"H:/OpenCV/Solution"。

输入完源码路径及生成路径之后,点击编译设置界面左下角的"Configure"按钮

如果是第一次配置,那么将会弹出一个选择生成工程目标环境的界面,此处选择“Visual Studio 10 2010”选项,勾选"Use default native compilers",然后点击"Finish"按钮。


如果生成目标目录路径不存在,那么会有一个提示新建目录的对话框,如下图所示,直接点"Yes"即可。


第一次配置会出现很多红色的选项,别管它,再点击一次"Configure"按钮。


这一次,红色选项没有了,说明没有问题了,配置完成。


点击"Generate"按钮


在看到最下方有"Generating done"字样后,说明源码工程编译完毕。

     

     

OpenCV2.4.9源码工程测试

      

打开上一步设置的生成目录路径下的文件夹,可见有一个"Solution"文件夹,这个是上一步设置中自动生成的,双击该文件夹。


在"H:/opencv/Solution"路径下,我们可以看到有一个已经编译生成好了的VS2010工程文件"OpenCV.sln",双击该文件,既可以在VS2010中打开该工程文件。



在打开的"OpenCV"工程中,我们可以看到有68个项目。


右键点击OpenCV解决方案,选择生成解决方案。


编译用时较长,我的PC配置算是比较好的,但是编译也一共耗时约2分钟左右,生成62个工程,失败0个,说明全部编译通过。恭喜自己一下!


接下来,就可以逐个工程去查看,编译了。关于这些样例工程及源码的解释,后续将补充。。。

     

     

OpenCV2.4.9自带样例源码编译及测试

     

以上介绍的是OpenCV的源码编译及工程,下面介绍怎么编译OpenCV自带的样例源码及工程。

熟门熟路地打开CMake3.0.1,将源码路径改为:"H:/opencv/sources/samples"(具体路径随安装位置而不同,在opencv的源码安装目录下可以找到“sample”文件夹)。







在一通配置(Configure)及生成(Generate)后(配置项同上,此处不赘述!),在目标目录下,可以找到已经生成好了的OpenCV的样例工程文件:“samples.sln


点击打开"samples.sln",看到解决方案资源管理器中显示一共有172个项目(样例真多,好好看哈!)


右键点击解决方案,选择“生成解决方案


大概一分钟左右(不同机器配置,编译时间有差别),编译完成,工程生成171个工程,失败0个,一次编译通过,点个赞!


整体编译无误后,随手打开一个样例工程,本文选择“(EXAMPLE) lkdemo”工程。此工程源码使用改进的Lucas-Kanade光流算法,用于检测视频运动目标。用鼠标点击目标点,可视频跟踪。


点击运行,发现一个命令行界面一闪而过,之后就退出了,这是为什么呢?

通过单步运行调试发现,在“lkdemo.cpp”文件的56行的"if( !cap.isOpened() );"判断语句中,播放器没有打开,直接在控制台显示一行“Could not initialize capturing...”就退出了。分析其原因,是因为“cap.open("Megamind.avi");”这个语句中的视频文件“Megamind.avi”不在程序目录下。知道原因,就好解决了!

在“H:\opencv\sources\samples\cpp”目录下(源码文件目录)拷贝“Megamind.avi”文件至“H:\opencv\sampleSolution\cpp\Debug”目录下(此乃程序“cpp-example-lkdemo.exe”所在目录)。换句话说,就是要确保在程序运行的目录下有Megamind.avi文件即可。




在做完以上工作后,再次点击运行,就成功运行了,播放的是一个动画片,在画面的一处点击左键后,会有一个绿色的标记点,该标记点的位置会随着周围物体的运动而改变,这应该就是所谓的视频跟踪了。截图如下:



OK,这其中的原理及工作流程我就不介绍了,自己看源码,其他样例工程的源码可以一个个去看,然后编译运行,相信将这些样例都熟悉理解摸透后,OpenCV对你将不再陌生。欢迎你步入OpenCV的殿堂,开始你的学习阶段吧!



你可能感兴趣的:(OpenCV学习使用)