1 下载源码opencv版本3.4.9 可选:zbar版本1.2.11 如果以上地址失效,可以下载Opencv依赖库源码+build_zynqmp.sh。 2 编译Host版本的库需要先安装cmake sudo apt-get install cmake 用户目录下新建tools里面再建opencv文件夹,opencv-3.4.9.tar.gz、ffmpeg-2.8.6.tar.zx解压至该文件夹。 #!/bin/bash export ZYNQMP_OPENCV_BUILD=/home/element/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 ~/tools/opencv/ffmpeg-2.8.6 ./configure --enable-shared --disable-static --disable-x86asm --prefix=$ZYNQMP_OPENCV_BUILD make -j8 make install cd ~/tools/opencv/opencv-3.4.9 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_IPP=OFF -D WITH_IPP_A=OFF -D BUILD_opencv_nonfree=OFF -D CMAKE_INSTALL_PREFIX=$ZYNQMP_OPENCV_BUILD ~/tools/opencv/opencv-3.4.9 make -j8 make install 等待编译完成。如下 3 测试Host版本库运行QtCreator,.pro文件加入如下代码添加opencv的库与头文件。 TEMPLATE = app CONFIG += console c++11 -mfloat-abi=hard CONFIG -= app_bundle CONFIG -= qt INCLUDEPATH += /home/element/tools/MNN/include LIBS += /home/element/tools/opencv_host_lib/lib/lib*.so* SOURCES += main.cpp 注意添加库文件时,是添加库名,非文件名。 //包含头文件 #include <opencv/cv.hpp> #include <opencv2/opencv.hpp> //mainwindow类添加私有成员 private: cv::Mat image; mainwindow.cpp代码如下 4 编译ZynqMp版本的库解压opencv、ffmpeg、jped、libpng、tiff、v4l、x264、xvidcore、zlib、zbar放至新建的scr_pkg文件夹。参考 【Xilinx-Petalinux学习】-04-OpenCV的移植与alinx的资料 在tools目录编写运行脚本opencv_build_arm64.sh,设置可参考CMake交叉编译配置。 脚本如下: #!/bin/sh #SDK_PATH=/opt/pkg/xsdk/SDK/2018.3 #if [ ! -d $SDK_PATH ]; then # echo "no dir ${SDK_PATH}" # exit 1 #fi #source ${SDK_PATH}/settings64.sh #export CROSS_COMPILE=arm-xilinx-linux-gnueabi export CROSS_COMPILE=aarch64-linux-gnu export ZYNQ_CV_BUILD=//home/element/tools/opencv_arm64_lib Cur_Dir=$(pwd) export LD_LIBRARY_PATH=$ZYNQ_CV_BUILD/lib:${LD_LIBRARY_PATH} export C_INCLUDE_PATH=$ZYNQ_CV_BUILD/include:${C_INCLUDE_PATH} export CPLUS_INCLUDE_PATH=$ZYNQ_CV_BUILD/include:${CPLUS_INCLUDE_PATH} export PKG_CONFIG_PATH=$ZYNQ_CV_BUILD/lib/pkgconfig:${PKG_CONFIG_PATH} #export PKG_CONFIG_LIBDIR=/opt/Xilinx/SDK/2015.4/gnu/arm/lin/arm-xilinx-linux-gnueabi/lib export PKG_CONFIG_LIBDIR=/opt/gcc-aarch64-linux-gnu/aarch64-linux-gnu/lib64 OPENCV_SRC=opencv-3.4.9 TMP_DIR=zynq_src_tmp sudo mkdir $ZYNQ_CV_BUILD sudo chmod 777 $ZYNQ_CV_BUILD mkdir $TMP_DIR cp -r -f $Cur_Dir/src_pkg/* $Cur_Dir/$TMP_DIR cd $Cur_Dir/$TMP_DIR/v4l-utils-1.12.5 ./bootstrap.sh ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --without-jpeg --with-udevdir=$ZYNQ_CV_BUILD/lib/udev make -j8 make install cd $Cur_Dir/$TMP_DIR/zlib-1.2.11 export CC=${CROSS_COMPILE}-gcc ./configure --prefix=$ZYNQ_CV_BUILD --shared make make install cd $Cur_Dir/$TMP_DIR/jpegsrc.v9b/jpeg-9b ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --enable-shared make make install cd $Cur_Dir/$TMP_DIR/libpng-1.6.21 ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --with-pkgconfigdir=$ZYNQ_CV_BUILD/lib/pkgconfig LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_INSTALL/include make make install cd $Cur_Dir/$TMP_DIR/x264-snapshot-20160131-2245-stable ./configure --host=aarch64-linux --cross-prefix=${CROSS_COMPILE}- --enable-shared --prefix=$ZYNQ_CV_BUILD make make install cd $Cur_Dir/$TMP_DIR/xvidcore-1.3.7/xvidcore/build/generic ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --disable-assembly make make install cd $Cur_Dir/$TMP_DIR/tiff-4.0.6 ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --enable-shared LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_BUILD/include make make install cd $Cur_Dir/$TMP_DIR/ffmpeg-2.8.6 ./configure --prefix=$ZYNQ_CV_BUILD --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm64 --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cross-prefix=${CROSS_COMPILE}- --enable-swscale --extra-cflags=-I$ZYNQ_CV_BUILD/include --extra-ldflags=-L$ZYNQ_CV_BUILD/lib --disable-asm make -j8 make install cd $Cur_Dir/$TMP_DIR/zbar-0.10 ./configure --prefix=$ZYNQ_CV_BUILD --host=${CROSS_COMPILE} --enable-shared --without-jpeg --without-python --without-gtk --without-qt --disable-video --without-imagemagick LDFLAGS=-L$ZYNQ_CV_BUILD/lib CFLAGS=-I$ZYNQ_CV_BUILD/include make make install cd $Cur_Dir/$TMP_DIR/$OPENCV_SRC mkdir build cd build echo "set( CMAKE_SYSTEM_NAME Linux )" > toolchain.make echo "set( CMAKE_SYSTEM_PROCESSOR arm )" >> toolchain.make echo "set( CMAKE_C_COMPILER ${CROSS_COMPILE}-gcc )" >> toolchain.make echo "set( CMAKE_CXX_COMPILER ${CROSS_COMPILE}-g++ )" >> toolchain.make echo "set( CMAKE_INSTALL_PREFIX $ZYNQ_CV_BUILD )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH $ZYNQ_CV_BUILD )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )" >> toolchain.make echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )" >> toolchain.make cmake -D CMAKE_TOOLCHAIN_FILE=toolchain.make -D BUILD_DOCS=OFF -D BUILD_opencv_nonfree=OFF -D BUILD_JPEG=OFF -D BUILD_PACKAGE=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_PNG=OFF -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=OFF -D BUILD_TIFF=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_ZLIB=OFF -D BUILD_opencv_apps=OFF -D BUILD_opencv_calib3d=ON -D BUILD_opencv_videostab=ON -D BUILD_opencv_world=OFF -D WITH_1394=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF -D WITH_EIGEN=OFF -D WITH_GIGEAPI=OFF -D WITH_GPHOTO2=OFF -D WITH_GTK=OFF -D WITH_GSTREAMER=OFF -D WITH_JASPER=OFF -D WITH_LIBV4L=OFF -D WITH_MATLAB=OFF -D WITH_OPENCL=OFF -D WITH_OPENCLAMDBLAS=OFF -D WITH_OPENCLAMDFFT=OFF -D WITH_OPENEXR=OFF -D WITH_PTHREADS_PF=OFF -D WITH_PVAPI=OFF -D WITH_V4L=ON -D WITH_JPEG=ON -D WITH_PNG=ON -D WITH_TIFF=ON -D WITH_FFMPEG=ON -D WITH_WEBP=OFF $Cur_Dir/$TMP_DIR/$OPENCV_SRC #ccmake . cp -r -f $ZYNQ_CV_BUILD/lib/* $Cur_Dir/$TMP_DIR/$OPENCV_SRC/build/lib make -j8 sudo make install cd $Cur_Dir 然后直接运行脚本,等待编译完成,在opencv_host_lib出现编译完的文件。 编译tiff时 Error: “Invalid configuration 'aarch64-linux-gnu’: machine 'aarch64’ not recognized”的解决办法 5 测试ZynqMp版本库QT的环境配置参考:https://blog.csdn.net/hl1796/article/details/90205218 test.pro修改如下 TEMPLATE = app CONFIG += console c++11 -mfloat-abi=hard CONFIG -= app_bundle CONFIG -= qt INCLUDEPATH += /home/element/tools/MNN/include /home/element/tools/opencv_arm64_lib/include LIBS += /home/element/tools/opencv_arm64_lib/lib/lib*.so* /home/element/tools/MNN/build/libMNN.so SOURCES += main.cpp build~运行Vehicle-Detection-MNN-Yolo-Fastest项目,效果如下 ——问题—— lib/libopencv_calib3d.so:-1: error: error adding symbols: File in wrong format 用错opencv的版本,需要用交叉编译出来的版本。 致命错误: intmath.h:没有那个文件或目录 编译后的incluld里的文件不齐全,再次sh opencv_build_arm64.sh 解决问题 参考链接:https://blog.csdn.net/zhuxl24/article/details/105987830 |
|