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

Posted 长沙红胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台相关的知识,希望对你有一定的参考价值。

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/123696821
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

OpenCV开发专栏(点击传送门)

上一篇:《OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体
下一篇:持续补充中…


前言

  移植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动态刷新绘图能力可以说得上是有点差的)(图略)


上一篇:《OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体
下一篇:持续补充中…


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/123696821

以上是关于OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台的主要内容,如果未能解决你的问题,请参考以下文章

C++笔记-Centos7搭建OpenCV3.4开发环境

VS2010+OpenCV3.4.1开发环境配置(转载)

OpenCV开发——OpenCV3.4+Python3.5+Windows10安装问题解决

vs2019+opencv3.4.1+pcl1.8.1环境搭建

客快物流大数据项目(七十四):Impala的java开发

ubuntu18安装opencv3.4.0+opencv_contrib3.4.0