前言

  移植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

  

  1. 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目录下也行。
  1. cmake -D CMAKE_BUILD_TYPE=RELEASE \
  2. -D CMAKE_INSTALL_PREFIX=/home/yang/work/opencv_rootfs \
  3. -D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \
  4. -D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \
  5. -D BUILD_SHARED_LIBS=ON \
  6. -D CMAKE_CXX_FLAGS=-fPIC \
  7. -D CMAKE_C_FLAGS=-fPIC \
  8. -D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
  9. -D ENABLE_PIC=ON \
  10. -D WITH_1394=OFF \
  11. -D WITH_ARAVIS=OFF \
  12. -D WITH_ARITH_DEC=ON \
  13. -D WITH_ARITH_ENC=ON \
  14. -D WITH_CLP=OFF \
  15. -D WITH_CUBLAS=OFF \
  16. -D WITH_CUDA=OFF \
  17. -D WITH_CUFFT=OFF \
  18. -D WITH_FFMPEG=ON \
  19. -D WITH_GSTREAMER=ON \
  20. -D WITH_GSTREAMER_0_10=OFF \
  21. -D WITH_HALIDE=OFF \
  22. -D WITH_HPX=OFF \
  23. -D WITH_IMGCODEC_HDR=ON \
  24. -D WITH_IMGCODEC_PXM=ON \
  25. -D WITH_IMGCODEC_SUNRASTER=ON \
  26. -D WITH_INF_ENGINE=OFF \
  27. -D WITH_IPP=OFF \
  28. -D WITH_ITT=OFF \
  29. -D WITH_JASPER=ON \
  30. -D WITH_JPEG=ON \
  31. -D WITH_LAPACK=ON \
  32. -D WITH_LIBREALSENSE=OFF \
  33. -D WITH_NVCUVID=OFF \
  34. -D WITH_OPENCL=OFF \
  35. -D WITH_OPENCLAMDBLAS=OFF \
  36. -D WITH_OPENCLAMDFFT=OFF \
  37. -D WITH_OPENCL_SVM=OFF \
  38. -D WITH_OPENEXR=OFF \
  39. -D WITH_OPENGL=OFF \
  40. -D WITH_OPENMP=OFF \
  41. -D WITH_OPENNNI=OFF \
  42. -D WITH_OPENNNI2=OFF \
  43. -D WITH_OPENVX=OFF \
  44. -D WITH_PNG=OFF \
  45. -D WITH_PROTOBUF=OFF \
  46. -D WITH_PTHREADS_PF=ON \
  47. -D WITH_PVAPI=OFF \
  48. -D WITH_QT=OFF \
  49. -D WITH_QUIRC=OFF \
  50. -D WITH_TBB=OFF \
  51. -D WITH_TIFF=ON \
  52. -D WITH_VULKAN=OFF \
  53. -D WITH_WEBP=ON \
  54. -D WITH_XIMEA=OFF \
  55. -D BUILD_opencv_highgui=OFF \
  56. ..

  

步骤三:编译

  1. make -j8

  
  

步骤四:安装

  1. make install

  

 

部署到板子上

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

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

  1. # ffmpeg-3.4.8 sdk
  2. INCLUDEPATH += /home/yang/work/ffmpeg_rootfs/include \
  3. LIBS += -L/home/yang/work/ffmpeg_rootfs/ffmpeg-3.4.8/bin
  4. LIBS += -lavcodec \
  5. -lavdevice \
  6. -lavfilter \
  7. -lavformat \
  8. -lavutil \
  9. -lswresample \
  10. -lswscale
  11. INCLUDEPATH += /home/yang/work/opencv_rootfs/include \
  12. /home/yang/work/opencv_rootfs/include/opencv \
  13. /home/yang/work/opencv_rootfs/include/opencv2
  14. LIBS += -L/home/yang/work/opencv_rootfs/lib \
  15. -lopencv_calib3d \
  16. -lopencv_core \
  17. -lopencv_features2d \
  18. -lopencv_flann \
  19. -lopencv_imgcodecs \
  20. -lopencv_imgproc \
  21. -lopencv_ml \
  22. -lopencv_objdetect \
  23. -lopencv_photo \
  24. -lopencv_shape \
  25. -lopencv_stitching \
  26. -lopencv_superres \
  27. -lopencv_video \
  28. -lopencv_videoio \
  29. -lopencv_videostab
 

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

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

 

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

  1. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  2. live555 交叉编译移植到海思开发板

    本文章参考了.http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明.特此感谢 https://blog.csdn.n ...

  3. 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口

    前言   上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...

  4. Java开发笔记(十四)几种运算符的优先级顺序

    到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符.赋值运算符.逻辑运算符.关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术.逻辑.关系等运算,最后 ...

  5. Android笔记(七十四) 详解Intent

    我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...

  6. .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)

    上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...

  7. Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件

    前言   上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤.   受限制   因为直接配置sample的vi比较麻烦 ...

  8. OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体

    前言   级联分类器的效果并不是很好,准确度相对深度学习较低,本章使用opencv通过tensorflow深度学习,检测已有模型的分类.   Demo       可以猜测,1其实是人,18序号类是狗 ...

随机推荐

  1. Bootstrap提供的CDN服务标签与下载文档

    目录 1.引入Bootstrap提供的CDN服务 1.选择下载Bootstrap CDN 二:下载Bootstrap官方文档 1.进入Bootstrap官网,选择3版本中文档. 1.引入Bootstr ...

  2. 在Linux中设置php变量的方法

    默认情况下已经安装好了PHP环境,并且知道安装好后的PHP文件路径,然后可以通过以下的方式设置PHP变量,快速执行PHP命令运行PHP文件. 环境:centos 第一步:vi ~/.bash_prof ...

  3. 4、Linux基础--系统目录

    笔记 1.晨考 1.移动文件的命令 mv 2.删除文件的命令及其参数 rm 参数: -r : 递归删除 -f : 不提示删除 -i : 提示删除 3.复制文件的命令及其参数 cp 参数: -r : 递 ...

  4. 依赖于angular的table组件

    组件实现了以下功能 1. 列宽可动态拖动 2. 列数据排序 3. 列过滤 4. 列位置自由调整 除了需要引入angular.js(我用的是1.4.6版本),还需要引用一个angular衍生出来的插件n ...

  5. java POI 导出到word文档 (附工具类)

    1,导入poi相关依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-o ...

  6. C# 实例解释面向对象编程中的里氏替换原则

    在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解.灵活和可维护.这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原 ...

  7. 数据分析需要学什么?BI工具有速成?

    ​我们都知道,成为一个数据分析师的必经之路,必须要会使用SQL和R语言.假如你想学会数据分析的话,先别着急着学编程技术,先学好excel,把excel真正学会了,操作熟练了,会做常用函数公式,数据透视 ...

  8. 【C# .Net GC】GC初始化设置 和GcSetting

    相关的类 GcSetting 类 GCLargeObjectHeapCompactionMode 枚举 GCLargeObjectHeapCompactionMode 枚举 属性的值 GCSettin ...

  9. 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression

    以下都是反射在表达式树中的应用 对象初始化 Expression.MemberInit 反射获取成员(字段 或者属性),绑定数据,然后生成 成员表达式节点 class Animal { public ...

  10. 用python构建一个多维维数组

    用python构建一个二维数组 解法? 方法1: num_list=[0]*x//表示位创建一个一维数组为num_lis[x],且数组中的每一项都为0 num_list=[[0]*x for i in ...