今天总结下OPENCV的移植,重新介绍下我用的系统省得大家往前翻了(我认为版本很重要,虽然新的版本都会向下兼容,但是很多时候配置还是需要改动的),PC机ubuntu12.10 64位,ZYNQ上XILLINX。我的比赛题目是车牌识别,所以需要用到图像库,这样自然想到了OPENCV。我在http://opencv.org/官网上下载了最新的opencv2.4.5.tar.gz。
其他的软件包仍然用apt-get install傻瓜式安装吧。
我参考了官网的安装教程(网上其他的教程博客肯定是没有真么新的了并且官网教程还是很不错的),这里给个链接http://opencv.org/documentation.html,可以下到pdf的。PC的安装照着tutorial的Installation in linux 就可以了。也可以照着下面的执行。
- apt-get install build-essential
- apt-get install cmake cmake-gui
- apt-get install libgtk2.0-dev
- apt-get install libavcodec-dev libavformat-dev libswscale-dev
- apt-get install libdc1394-22-dev
- apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev
这样所有的依赖库就都下好了,如果想知道都是干啥的,找tutorial或者百度吧,这里不多说了。
现在安装OPENCV2.4.5,首先需要生成makefile,先进入到你的解压目录下,终端执行cmake-gui
上面有两个路径选择,一个是where is the source code就是你的解压路径,另一个where to build the binarier这个路径是你自己新建的文件夹告诉opencv将make需要的文件以及makefile等的生成路径。PC下编译就选default native compilers就可以了。里面还有个cmake-prefix的设置,这个选择make install的安装路径,最好不要改使用默认的/usr/local,因为有些配置文件例如pkgconfig需要的opencv.pc会放到ubuntu的默认搜索路径下,会自动加载,否则使用cmake编译生成PC下的执行文件时,可能会出现找不到的错误。
在交叉编译的时候我推荐使用cmake-gui,由于官方已经给我们提供了一个pc上用的cmakelists.txt ,我们直接用就行了,不但都配置好了,还不会出错,执行下面的代码。
- mkdir release
- cd release
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
..的意思就是上上个文件夹(就是解压文件夹)上找到配置cmakelists.txt
- make
- make install
一般是不会错的。接下来编译一个opencv的代码,如果你的安装路径是默认的,可以参考tutorial中的Using OpenCV withgcc and CMake,http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html#linux-gcc-usage是链接,我没有遇到错误。这里我介绍使用上个博客中安装的QT来单独编译Opencv的代码。
首先在QTcreator新建一个qt console application的工程
- #include
- #include
- #include
- #include
- using namespace cv;
- int main(int argc, char *argv[])
- {
- // QCoreApplication a(argc, argv);
- namedWindow( "src", WINDOW_AUTOSIZE );
- Mat src1 = imread( "lena.jpg" );
- while(1)
- {
- imshow( "src", src1 );
- char c = waitKey(30);
- if( 27==c )
- return 0;
- }
- // return a.exec();
- }
现在还不能编译,因为QT还找不到OPENCV的头文件以及so的链接库,需要指定。可以再pro文件里改,我为了以后每个工程都自动添加OPENCV的库,修改/usr/share/qt4/mkspecs/default/qmake.conf,添加以下语句:
- INCLUDEPATH += /root/opencv/opencv_pc/include \
- /root/opencv/opencv_pc/include/opencv \
- /root/opencv/opencv_pc/include/opencv2
- LIBS += /root/opencv/opencv_pc/lib/libopencv_highgui.so \
- /root/opencv/opencv_pc/lib/libopencv_core.so \
- /root/opencv/opencv_pc/lib/libopencv_imgproc.so
这样就可以了,这里需要注意的就是路径了,我的QT是apt-get install安装的,默认路径/usr/share/qt4/mkspecs,
大家注意到我的opencv路径是自己随便设的,不是按文档说的默认路径。没关系,你找到就行了。opencv默认安装在/usr/local/下的四个文件夹。找到lib文件夹指向就可以了。我这里没有把所有的库都加进去,只加了最常用的3个。
要想全部加入有个简单的办法,下面就是,那些一个一个加的同学要哭了。
- LIBS += /root/opencv/opencv_pc/lib/*.so
记得保存啊,对还有件小事,由于我们的例子是读显示图片,在OPENCV源码的SAMPLE中找到lena.jpg放到生成执行文件的文件夹。好现在就可以build(大绿钮)了,我直接run了。