创客神器NanoPi
直播中

陆海俊

8年用户 13经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[经验]

【NanoPi NEO Plus2开发板试用体验】图像识别算法之opencv交叉编译

板子回来打算做图像识别的算法的,所以必定会使用到opencv库,所以这篇具体介绍下opencv的交叉编译。
首先在现有的机器上安装虚拟机以及ubuntu,这部分很简单,略过。

这边先罗列一下各个库的版本,因为在版本的兼容上害我吃不少苦头:
  • PC操作系统:Ubuntu 16.04 LTS
  • OpenCV 2.4.9
  • 编译器:gcc-4.6.2-linaro(这个我用的是我之前的开发板给的)
  • CMake版本:2.8.12
因为视频处理,迫使我要把ffmpeg编译到opencv里面去,这一块搞了我好久,最后没办法,我又把ffmpeg重新编译了一遍。
现将交叉编译链路径加入环境。bashrc中
这边也把编译ffmpeg所需要的zlib,jpeg,png,yasm,x264,xvidere,ffmpeg具体版本如下。
  • zlib-1.2.11
  • jpegsrc.v9b
  • libpng-1.6.29
  • yasm-1.3.0
  • x264-snapshot-20170415-2245
  • xvidcore_1.3.3.orig
  • ffmpeg-2.8.11
下面开始编译:OPENCV_DEPEND为安装目录

1.zlib的编译
解压进入目录
./configure --prefix=$OPENCV_DEPEND
[backcolor=rgba(128, 128, 128, 0.0470588)]修改Makefile
CC=ARM-linux-gcc
AR=arm-linux-ar
RANLIB=arm-linux-ranlib
LDSHARED=arm-linux-gcc -shared-Wl,-soname,libz.so.1,--version-script,zlib.map
之后就是make&make install

2.jpeg编译
./configure --host=arm-linux --prefix=$OPENCV_DEPEND --enable-shared --enable-staticmakemake install

3.png编译
./configure --host=arm-linux --prefix=$OPENCV_DEPEND --enable-shared --enable-staticmakemake instal

这里如果你不指定zlib的安装目录,会出错

4.yasm编译
CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=$OPENCV_DEPENDmakemake install


5.x264编译
CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=$OPENCV_DEPENDmakemake install


6.xvid编译
cd ./build/generic
./configure --prefix=$OPENCV_DEPEND --host=arm-linux --disable-assemblymakemake install


7.ffmpeg编译
./configure --prefix=$OPENCV_DEPEND --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale --extra-ldflags=-L$OPENCV_DEPEND/lib --extra-cflags=-I$OPENCV_DEPEND/include
make
make install


8.(很重要)将opencv_depeng下的include和lib中文件全部拷贝到交叉编译工作对应的目录中


ffmpeg到此编译完成


下面就开始编译opencv,如果上面步骤没有出错,下面就很简单了
1.先安装cmake
sudo apt-get install cmake cmake-qt-gui
sudo cmake-gui
填写方式如图
1.png
2.png
3.png
finsh之后,会报错,要修改部分选项
  • 去掉 WITH_CUDA
  • 去掉 WITH_GTK
  • 去掉 WITH_1394
  • 去掉 WITH_TIFF
  • CMAKE_INSTALL_PREFIX(安装目录),默认为/opencv-2.4.9/build/install,改为/usr/local/arm/opencv_install



先按下Configure,然后按下Generate
此时修改在/opencv-2.4.9/build文件夹中的CMakeCache.txt
CMAKE_EXE_LINKER_FLAGS选项本来为空,此时在后面加上:-lpthread -lrt -ldl
保存退出
make
make install
opencv 交叉编译完成

回帖(1)

IC爬虫

2017-9-4 11:44:35
交叉编译的工具链最好和板子系统带的工具链一样,不然会有问题
期待你的继续分享
举报

更多回帖

发帖
×
20
完善资料,
赚取积分