一:简介
本次二维码识别是基于zbar+opencv实现,开发平台为ubuntu18.04,文件执行平台为Hisi3516。
因为最终编译的文件是在ARM架构下执行,所以相关库文件和执行程序都需要交叉编译
二:Hisi3516开发环境搭建
tar -xzvf arm-himix100-linux.tgz
cd arm-himix100-linux
chmod +x ./arm-himix100-linux.install
./arm-himix100-linux.install
执行完上述命令会发现在“/etc/profile”文件下保存有如下环境变量:
export PATH="/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH"
三:zbar交叉编译
1、获取zbar源码并解压
创建编译后的文件存放文件output
2、配置
./configure --prefix=$PWD/../output --host=arm-himix100-linux --enable-shared=yes --disable-video --without-imagemagick --without-gtk --without-qt --without-python
3、编译
make && make install
4、配置pkg-config
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/jun/tools/zbar/output/lib/pkgconfig
pkg-config --libs --cflags zbar
四:opencv相关库交叉编译
opencv的源码编译依赖一些三方库,那么首先来编译这些三方库,重点:将这些三方库编译后的文件统一放到一个路径下,方便后面opencv的编译,我的统一路径为:/home/jun/hisifile
1、libz
CC=arm-himix100-linux-gcc AR=arm-himix100-linux-ar RANLIB=arm-himix100-linux-ranlib ./configure --prefix=/home/jun/hisifile --shared
make
make install
2、libjpeg
./configure --host=arm-himix100-linux --prefix=/home/jun/hisifile --enable-shared --enable-static
make
make install
3、libpng
libpng的编译依赖于zlib库
./configure --prefix=/home/jun/hisifile LIBS=-L/home/jun/hisifile/lib CPPFLAGS=-I/home/jun/hisifile/include --host=arm-himix100-linux --enable-shared --enable-static
make
make install
4、yasm
CC=arm-himix100-linux-gcc ./configure --host=arm-himix100-linux --prefix=/home/jun/hisifile --enable-shared --disable-asm
make
make install
5、libx264
CC=arm-himix100-linux-gcc ./configure --host=arm-himix100-linux --prefix=/home/jun/hisifile --enable-shared --disable-asm
make
make install
6、libxvid
cd build/generic
./configure --host=arm-himix100-linux --prefix=/home/jun/hisifile --disable-assembly
make
make install
7、ffmpeg
./configure --prefix=/home/jun/hisifile --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-himix100-linux-gcc --enable-swscale --extra-ldflags=-L/home/jun/hisifile/lib --extra-cflags=-I/home/jun/hisifile/include
make
make install
四:opencv交叉编译
1、获取opencv源码库解压并创建两个文件夹build(用于创建配置)和output(opencv编译后的文件)
2、进入bulid目录执行“cmake-gui”
搜索CMAKE_BUILD_TYPE,将这个键的值改成Release,搜索CMAKE_INSTALL_PREFIX,将这个键的值改成源码目录下的output文件夹,如下图所示:
勾选自己需要的模块,如下图需要编译静态库,最后点击“Generate”生成Makefile文件
3、关闭cmake,返回opencv路径
make
make install
4、配置pkg-config
vim /etc/ld.so.conf
将目录/home/jun/tools/opencv/opencv-3.2.0/output/lib添加到文件末尾
ldconfig -v
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/jun/tools/opencv/opencv-3.2.0/output/lib/pkgconfig
pkg-config --libs --cflags opencv