• OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台


    前言

      移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持。

     

    Ffmpeg的移植

      Ffmpeg的移植请参考之前的文章:《FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
      (PS:ffmpeg解码h264是不需要依赖libx264的,但是编码是需要依赖libx264的,在海思上使用了mpp的venc,所以无需libx264)

     

    OpenCV下载

      下载地址:https://github.com/opencv/opencv/releases/tag/3.4.1
      QQ群:1047134658(点击“文件”搜索“opencv”,群内与博文同步更新)

     

    OpenCV的移植

    步骤一:下载解压

       在这里插入图片描述

    步骤二:配置cmake

      

    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/yang/work/ffmpeg_rootfs/lib/pkgconfig
    

      以上是目录,注意这里有坑(卡了一天):

    • 不要使用cmake-gui:要使用命令行,命令行可以识别到ffmpeg,但是cmake-gui不行
    • 系统本身是否安装了ffmpeg:默认是会先使用本地的,尽管设置了PKG_CONFIG_PATH
    • ffmpeg否依赖x264:可查看.pc文件,是否有-lx264(笔者就是编译的时候不小心编译了libx264库,所以cmake的时候都无法定义HAVA__FFMPEG,如果依赖的,记得将libx264拷贝到ffmpeg目录下也行。
    cmake -D CMAKE_BUILD_TYPE=RELEASE  \
                 -D CMAKE_INSTALL_PREFIX=/home/yang/work/opencv_rootfs \
                 -D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \
                 -D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \
                 -D BUILD_SHARED_LIBS=ON \
                 -D CMAKE_CXX_FLAGS=-fPIC \
                 -D CMAKE_C_FLAGS=-fPIC \
                 -D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
                 -D ENABLE_PIC=ON \
                 -D WITH_1394=OFF \
                 -D WITH_ARAVIS=OFF \
                 -D WITH_ARITH_DEC=ON \
                 -D WITH_ARITH_ENC=ON \
                 -D WITH_CLP=OFF \
                 -D WITH_CUBLAS=OFF \
                 -D WITH_CUDA=OFF \
                 -D WITH_CUFFT=OFF \
                 -D WITH_FFMPEG=ON \
                 -D WITH_GSTREAMER=ON \
                 -D WITH_GSTREAMER_0_10=OFF \
                 -D WITH_HALIDE=OFF \
                 -D WITH_HPX=OFF \
                 -D WITH_IMGCODEC_HDR=ON \
                 -D WITH_IMGCODEC_PXM=ON \
                 -D WITH_IMGCODEC_SUNRASTER=ON \
                 -D WITH_INF_ENGINE=OFF \
                 -D WITH_IPP=OFF \
                 -D WITH_ITT=OFF \
                 -D WITH_JASPER=ON \
                 -D WITH_JPEG=ON \
                 -D WITH_LAPACK=ON \
                 -D WITH_LIBREALSENSE=OFF \
                 -D WITH_NVCUVID=OFF \
                 -D WITH_OPENCL=OFF \
                 -D WITH_OPENCLAMDBLAS=OFF \
                 -D WITH_OPENCLAMDFFT=OFF \
                 -D WITH_OPENCL_SVM=OFF \
                 -D WITH_OPENEXR=OFF \
                 -D WITH_OPENGL=OFF \
                 -D WITH_OPENMP=OFF \
                 -D WITH_OPENNNI=OFF \
                 -D WITH_OPENNNI2=OFF \
                 -D WITH_OPENVX=OFF \
                 -D WITH_PNG=OFF \
                 -D WITH_PROTOBUF=OFF \
                 -D WITH_PTHREADS_PF=ON \
                 -D WITH_PVAPI=OFF \
                 -D WITH_QT=OFF \
                 -D WITH_QUIRC=OFF \
                 -D WITH_TBB=OFF \
                 -D WITH_TIFF=ON \
                 -D WITH_VULKAN=OFF \
                 -D WITH_WEBP=ON \
                 -D WITH_XIMEA=OFF \
                 -D BUILD_opencv_highgui=OFF \
                 ..
    

      在这里插入图片描述

    步骤三:编译

    make -j8
    

      在这里插入图片描述
      在这里插入图片描述

    步骤四:安装

    make install
    

      在这里插入图片描述

     

    部署到板子上

    • 方法一:拷贝进入系统目录,对应bin、include、lib
    • 方法二:单独一个目录,运行前跑脚本进入路径(笔者是Qt,将opencv打入qt的安装目录,使用qt的路径即可)。
      贴上开发本Qt的脚本(注意系统不同,平台的参数最后2个可能不同):
        在这里插入图片描述
     

    Qt的引入带ffmpeg的opencv配置文件

    # ffmpeg-3.4.8 sdk
    INCLUDEPATH += /home/yang/work/ffmpeg_rootfs/include \
    LIBS += -L/home/yang/work/ffmpeg_rootfs/ffmpeg-3.4.8/bin
    LIBS += -lavcodec \
            -lavdevice \
            -lavfilter \
            -lavformat \
            -lavutil \
            -lswresample \
            -lswscale
    
    INCLUDEPATH += /home/yang/work/opencv_rootfs/include \
                   /home/yang/work/opencv_rootfs/include/opencv \
                   /home/yang/work/opencv_rootfs/include/opencv2
    
    LIBS += -L/home/yang/work/opencv_rootfs/lib \
            -lopencv_calib3d \
            -lopencv_core \
            -lopencv_features2d \
            -lopencv_flann \
            -lopencv_imgcodecs \
            -lopencv_imgproc \
            -lopencv_ml \
            -lopencv_objdetect \
            -lopencv_photo \
            -lopencv_shape \
            -lopencv_stitching \
            -lopencv_superres \
            -lopencv_video \
            -lopencv_videoio \
            -lopencv_videostab
    
     

    板子上Qt+OpenCV播放器测试1

      将opencv部署到板子上,然后用qt的opencv播放器测试,播放慢速(判断是解码720p,mp4,h264大概11-12ms一帧,显示大概15ms一帧,刷图跟刷新的区域面积有直接关系,所以确认海思用qt动态刷新绘图能力可以说得上是有点差的)(图略)

     
  • 相关阅读:
    CSS实现商城分类导航效果(hover选择器)
    框架设计读书笔记--扩展点设计--组合法
    框架设计读书笔记--扩展点设计--钩子方法
    Ferris教程学习笔记:js示例2.8 求出数组中所有数字的和
    Ferris教程学习笔记:js示例2.7 点击Div,显示其innerHTML
    Ferris教程学习笔记:js示例2.6 百度输入法
    Ferris教程学习笔记:js示例2.5 记住密码提示框
    Ferris教程学习笔记:js示例2.4 鼠标移入改变样式,鼠标移出恢复
    程序最佳的学习方式
    Ferris教程学习笔记:js示例2.3 用循环将三个DIV变成红色
  • 原文地址:https://www.cnblogs.com/qq21497936/p/16051614.html
Copyright © 2020-2023  润新知