Opencv源码编译
For Ubuntu For Android For Windows
Version0.1
2013.06.06
目录
1.Ubuntu下编译opencv源代码(For linux&Android) (2)
1.1下载opencv源码 (2)
1.2下载安装Cmake (2)
1.3安装一些ubuntu下必要的库文件: (2)
1.4使用Cmake进行配置: (3)
1.5编译opencv生成linux下的opencv库文件 (3)
1.6测试linux下Opencv例程: (4)
1.7Opencv For Android的编译 (4)
1.7.1安装ndk: (4)
1.7.2安装Android SDK (5)
1.7.4开始编译opencv中关于android相关的源码 (5)
2.Ubuntu下codeblocks Opencv开发环境配置 (7)
2.1下载安装codeblocks (7)
2.2打开cldeblocks建立一个摄像头的测试程序: (8)
2.3配置工程的头文件和链接库 (8)
3.Windows7+codeblocks Opencv开发环境搭建 (11)
3.1下载opencv2.2 (11)
3.5打开CMake (12)
3.6环境变量的设置 (12)
3.7在CMake中点击configure (14)
3.8编译oepncv源码 (15)
3.8.1先进入E盘 (15)
3.8.2进入目录OpenCV-2.2.0-build (15)
3.8.3编译opencv源码 (16)
3.8.4安装opencv库文件 (16)
3.9使用codeblocks建立openv工程 (17)
3.10测试代码 (18)
3.11给工程文件添加opencv相关路径 (19)
3.12编译工程文件 (22)
附其他参考资料备忘 (23)
1.Ubuntu下编译opencv源代码(For linux&Android)
1.1下载opencv源码
Opencv各个版本的下载地址:
/index.php/Download(opencv中文网)
sourceforge/projects/opencvlibrary/files/(opencv英文网)
建立目录~/Opencv2.2
将其解压到~/Opencv2.2/OpenCV-2.2.0
并在~/Opencv2.2中建立opencv-build目录,用来存放编译后的opencv库
1.2下载安装Cmake
下载网址:/cmake/resources/software.html
这里采用命令行安装Cmake的方式
sunny@SUNNYART:~$sudo apt-get install cmake
sunny@SUNNYART:~$sudo apt-get install cmake-qt-gui
1.3安装一些ubuntu下必要的库文件:
sudo apt-get install pkg-config libgtk2.0-dev libjpeg libtiff libjasper libpng zlib openexr libjpeg-dev ffmpeg libgstreamer libv4l libv4l-0libv4l-dev libxine unicap libavformat-dev libswscale-dev swig libjpeg-progs build-essential python-numpy
1.4使用Cmake进行配置:
打开Cmake:
sunny@SUNNYART:~$cmake-gui
进行配置:
首先按照之前建立的文件夹路径,选择好opencv源码路径和build路径
源码路径为:~/Opencv2.2/OpenCV-2.2.0
Build目标路径:~/Opencv2.2/OpenCV-2.2.0
然后点击Configure(可能需要点击两次),然后点击Generate,配置工作就完成了。
(可能使用Cmake进行配置就是为了生成面向不同开发目标平台的Makefile,之后再用编译器编译出相应的opencv的库文件)
1.5编译opencv生成linux下的opencv库文件
sunny@SUNNYART:~$cd~/2.2opencv/opencv-build/
sunny@SUNNYART:~/2.2opencv/opencv-build$make
编译完成后,执行安装命令将生成的库文件安装到Ubuntu系统的相应路径中去
sunny@SUNNYART:~/2.2opencv/opencv-build$make install
对于Ubuntu
头文件会安装到:urs/local/include
库文件会安装到:usr/local/lib
至此Opencv在Linux下的库文件就编译和安装完成了。可以使用codeblocks调用库文件进行Opencv的开发。(具体的codeblocks开发Opencv环境的搭建将在下一章进行讲解),在编译中如果总是出错,有可能是选择的Opencv版本与Ubuntu中相关环境的版本不匹配,所以最好选择poencv2.2或者是opencv2.0
1.6测试linux下Opencv例程:
终端下转到刚才解压的OpenCV-2.2.0/samples/c文件夹下,里面有一个build_all.sh脚本,执行它:bash./build_all.sh,成功之后,ls命令查看,生成了一个facedetect执行文件,./facedetect
执行它!如果弹出一个捕捉脸部的窗口,就成功了。
sunny@SUNNYART:~$cd/home/sunny/2.2opencv/OpenCV-2.2.0/samples/c
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/samples/c$bash./build_all.sh
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/samples/c$./facedetect
注:如果在最后执行facedetect时报错:./facedetect:error while loading shared libraries: libopencv_core.so.2.2:cannot open shared object file:No such file or directory。
这是因为你没有装ffmpeg,输入sudo-apt-get install ffmpeg安装,安装成功之后再执行facedectect即可!
1.7Opencv For Android的编译
1.7.1安装ndk:
由于Google官方版本的Android ndk并不能完全支持所有的C++特性,所以如果要使用Opencv就必须重新安装经过特殊修改的ndk:
下载网址:stax/android/ndk-r4.php(注意选择相应的版本)
下载之后将其解压到自己的home目录。在家目录(~)下会生成android-ndk-r4-crystax
目录。(注:这个目录是源码中相应Makefile配置的相应默认NDK目录)
Tips:The android ndk,now referred to as the ndk,is the gcc toolchain for android,and is what creates the shared libraries for android that are loadable by android apps through a the Java Native Interface(JNI)
1.7.2安装Android SDK
从google开发网站上下载android SDK,安装完整个SDK后,需要将tools、platform-tools 等工具的目录添加到系统的PATH环境变量中,方便之后在任意路径下使用SDK的相关工具。
对于使用硬件手机平台测试android程序,有时候可能需要对USB进行相关的配置。具体设置方法参见之前的文档
1.7.4开始编译opencv中关于android相关的源码
1.7.4.1静态库的编译
sunny@SUNNYART:~$cd2.2opencv/OpenCV-2.2.0/android/
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android$mkdir build
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android$cd build/
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/build$
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/build$cmake..
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/build$make
编译阶段会花费一些时间
1.7.4.2共享库的编译
sunny@SUNNYART:~$cd2.2opencv/OpenCV-2.2.0/android/android-jni
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/android-jni$make
首先进行make首次会提醒修改v.mk,这里就是进行配置NDK的相关的路径。
如果自己的NDK已经解压到了${HOME}目录,就不需要进行修改:
路径为:/home/sunny/2.2opencv/OpenCV-2.2.0/android/v.mk
文件内容如下:
#location of android-opencv.mk file that was generated by the cmake build
#of opencv for android
OPENCV_CONFIG=../build/android-opencv.mk
#the root directory of the crystax r4ndk-ndk-build should be in this dir
#you can download the ndk from stax/android/ndk-r4.php
ANDROID_NDK_ROOT=$(HOME)/android-ndk-r4-crystax
#define only armeabi-v7a to make the final apk smaller or armeabi
ARM_TARGETS="armeabi armeabi-v7a"
修改完路径之后,再次make,就开始编译共享链接库了。
注意:每个工程文件的目录下都会由一个v.mk文件用于配置相关的NDK路径,在下面编译例子程序CvCamera的时候也要注意。最好是将NDK解压到家目录,这样在以后就不需要进行配置了。
1.7.4.3安装ant进行Java相关的编译
ant版本最好要1.8以上
sunny@SUNNYART:~$sudo apt-get install ant1.8
安装完成之后,就开始接着编译Java先关的部分:
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/android-jni$sh./project_create.sh sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/android-jni$ant compile
至此Opencv中关于Android的相关代码就编译完成了。最终的生成文件可能是在:
~/2.2opencv/OpenCV-2.2.0/android/build/obj/local目录中,这些在配置eclipse+android+opencv 的开发环境会用到。(具体到时候再进行验证)
Opencv-2.2.0_
|_android_
|_android-jni
|_apps
|_build
上面是opencv源码中android相关目录架构,其中apps目录下是一些opencv android的例子程序。在build目录下是最终编译出来的相关库文件。
1.7.4.4编译安装android下的测试程序CVCamera
sunny@SUNNYART:~$cd2.2opencv/OpenCV-2.2.0/android/apps/CVCamera/
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/apps/CVCamera$sh build.sh
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/apps/CVCamera$make
这一步主要是建立swig wrappers and shared library.
(SWIG是一种简化脚本语言与C/C++接口的开发工具。简而言之,SWIG是一个通过包装和编译C 语言程序来达到与脚本语言通讯目的的工具。)
接下来开始编译生成android apk
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/apps/CVCamera$sh project_create.sh sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/apps/CVCamera$ant debug
这样就在当前目录下的bin目录生成了debug版的apk:CVCamera-debug.apk
执行下面的命令将apk安装到手机上(事先已经通过USB连接手机)
sunny@SUNNYART:~/2.2opencv/OpenCV-2.2.0/android/apps/CVCamera$ant install
上面的整个过程,既是用来检验opencv编译的是否成功也是android opencv编程及编译的很好的例子。
(Try to edit v.mk file's that get created in CVCamera and android-jni to reflect your system.)
2.Ubuntu下codeblocks Opencv开发环境配置
在linux PC中使用codeblocks IDE进行Opencv的开发仅仅需要将上一章中编译生成的Opencv的头文件和库文件,加入编译搜索路径即可。
2.1下载安装codeblocks
网址:/downloads/26
老版本:/downloads/source/5
注意要下载稳定版不要下载测试版或者debug版
2.2打开cldeblocks建立一个摄像头的测试程序:
先在家目录下建立一个文件夹workplace专门用来存放codeblocks的工程文件。
建立的工程文件名为:camera_demo
在安卓手机上运行php测试代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论