Opencv交叉编译及Arm平台移植

2014年12月03日

准备


1 配置好交叉编译链

2 安装cmake及一些依赖库

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

3 安装cmake-gui

sudo apt-get install cmake-qt-gui

4 从官网下载opencv源码

编译及安装


1 shell中输入cmake-gui打开cmake图形界面,输入opencv源码所在路径及要安装的路径(比如/usr/local/arm-opencv)。

2 点击configure按钮,在对话框中选择specify options for corss-compiling选项,点击next。

3 在弹出的新的对话框中,填上operating system(arm-linux),compilers(c和c++编译工具的具体路径)及target root(编译链目录,即arm-linux-*-gcc所在的bin文件夹上一级目录)。

4 点击finish,cmake开始工作。

5 停止工作后,会看到一片红,取消with_tiff,with_cuda,with_cl,build_opencv_ocl的选项;勾选上build_jpeg,build_png;找到cmake_install_prefix,改为usr/local/arm-opencv;如果想同时编译example,勾选上build_examples;如果想要生成debug版本的库,将cmake_build_type选项改为debug(首字母大写)。

6 配置完成后点击configure,直到没有红色为止,然后点击generate。

7 去往/usr/local/arm-opencv路径下,找到cmakecache.txt文件,将其中的cmake_exe_linker_flags:string=改为cmake_exe_linker_flags:string=-lpthread -lrt。

8 编译,等待完成。

sudo make

9 安装。

sudo make install

PC上配置、交叉编译及移植


1 在/etc/profile加入

#for arm-opencv
PKG_CONFIG_PATH=/usr/local/arm-opencv/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH

2 source /etc/profile

3 编写测试程序

// arm-opencv-test.cpp

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc,char *argv[])
{
  Mat image=imread("test.jpg");
  if(NULL==image.data)
   {
      cout<<"fail to load the image"<<endl;
   }

  cout<<"the size of test.jpg is:"<<image.rows<<"x"<<image.cols<<endl;

  return 0;
}

4 编译

arm-none-linux-gnueabi-g++ `pkg-config --cflags arm-opencv` `pkg-config --libs arm-opencv` arm-opencv-test.cpp -lpthread -lrt -ldl -o arm-opencv-test

5 将编译得到的opencv库拷贝到板子里的/lib/路径下(将libstdc++.so,libstdc++.so.6和libstdc++.so.6.0.16也拷贝到此),然后将编译得到的测试程序(可执行文件)拷贝到板子里进行测试。


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次