ZynqMp-OpenCv交叉编译

文章目录

  • 1 下载源码
  • 2 编译Host版本的库
  • 3 测试Host版本库
  • 4 编译ZynqMp版本的库
  • 5 测试ZynqMp版本库

书接上回 ZynqMp-Qt程序编译,开始编译Opencv。

1 下载源码

opencv版本3.4.5
ffmpeg版本4.0.5
zllib版本1.2.11
libpng版本1.6.35
tiff版本4.0.9
jpeg9d版本
x264-snapshots版本20171231-stable
v4l-utils版本1.14.2
xvidcore版本1.3.5
如果以上地址失效,可以下载Opencv依赖库源码+build_zynqmp.sh。

2 编译Host版本的库

需要先安装cmake

sudo apt-get install cmake

直接在Downloads文件夹下新建opencv文件夹,opencv-3.4.5.tar.gz、ffmpeg-3.4.7.tar.zx解压至该文件夹。
编写运行脚本,修改alinx的资料如下:

#!/bin/bash
export ZYNQMP_OPENCV_BUILD=/home/zxl/tools/opencv_host_lib
export LD_LIBRARY_PATH=$ZYNQMP_OPENCV_BUILD/lib:${LD_LIBRARY_PATH}
export C_INCLUDE_PATH=$ZYNQMP_OPENCV_BUILD/include:${C_INCLUDE_PATH}
export CPLUS_INCLUDE_PATH=$ZYNQMP_OPENCV_BUILD/include:${CPLUS_INCLUDE_PATH}
export PKG_CONFIG_PATH=$ZYNQMP_OPENCV_BUILD/lib/pkgconfig:${PKG_CONFIG_PATH}

sudo mkdir $ZYNQMP_OPENCV_BUILD
sudo chmod 777 $ZYNQMP_OPENCV_BUILD

cd ~/Downloads/opencv/ffmpeg-3.4.7
./configure --enable-shared --disable-static --disable-x86asm --prefix=$ZYNQMP_OPENCV_BUILD
make -j8
make install

cd ~/Downloads/opencv/opencv-3.4.5

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
  -D BUILD_opencv_nonfree=OFF \
  -D CMAKE_INSTALL_PREFIX=$ZYNQMP_OPENCV_BUILD ~/Downloads/opencv/opencv-3.4.5
make -j8
make install

等待编译完成。如下
ZynqMp-OpenCv交叉编译_第1张图片

3 测试Host版本库

运行QtCreator,.pro文件加入如下代码添加opencv的库与头文件。
ZynqMp-OpenCv交叉编译_第2张图片
注意添加库文件时,是添加库名,非文件名。
mainwindow.ui中添加一个Label:piclabel。
mainwindow.h添加

//包含头文件
#include 
#include 

//mainwindow类添加私有成员
private:
	cv::Mat image;

mainwindow.cpp代码如下
ZynqMp-OpenCv交叉编译_第3张图片
运行如下

4 编译ZynqMp版本的库

解压opencv、ffmpeg、jped、libpng、tiff、v4l、x264、xvidcore、zlib至opencv文件夹。
参考 【Xilinx-Petalinux学习】-04-OpenCV的移植与alinx的资料编写运行脚本build_zynqmp.sh,设置可参考CMake交叉编译配置。然后直接运行脚本,等待编译完成。
ZynqMp-OpenCv交叉编译_第4张图片

编译tiff时 Error: “Invalid configuration ‘aarch64-linux-gnu’: machine ‘aarch64’ not recognized”的解决办法

5 测试ZynqMp版本库

QtCreator修改设置
ZynqMp-OpenCv交叉编译_第5张图片
test.pro修改如下
ZynqMp-OpenCv交叉编译_第6张图片
build…

之前有考虑过用Petalinux的rootfs配置来给系统镜像加入opencv,但发现opencv的依赖库好像凑不齐,于是还是制作opencv的镜像与执行文件一起拷到sd卡。
在zcu106上运行效果如下:
ZynqMp-OpenCv交叉编译_第7张图片

你可能感兴趣的:(zynqmp,linux)