Ilingis 发表于 2022-3-26 21:51

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

exportPKG_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 -DCMAKE_BUILD_TYPE=RELEASE\-DCMAKE_INSTALL_PREFIX=/home/yang/work/opencv_rootfs\-DCMAKE_C_COMPILER=aarch64-himix100-linux-gcc\-DCMAKE_CXX_COMPILER=aarch64-himix100-linux-g++\-DBUILD_SHARED_LIBS=ON\-DCMAKE_CXX_FLAGS=-fPIC\-DCMAKE_C_FLAGS=-fPIC\-DCMAKE_EXE_LINKER_FLAGS=-lpthread -ldl\-DENABLE_PIC=ON\-DWITH_1394=OFF\-DWITH_ARAVIS=OFF\-DWITH_ARITH_DEC=ON\-DWITH_ARITH_ENC=ON\-DWITH_CLP=OFF\-DWITH_CUBLAS=OFF\-DWITH_CUDA=OFF\-DWITH_CUFFT=OFF\-DWITH_FFMPEG=ON\-DWITH_GSTREAMER=ON\-DWITH_GSTREAMER_0_10=OFF\-DWITH_HALIDE=OFF\-DWITH_HPX=OFF\-DWITH_IMGCODEC_HDR=ON\-DWITH_IMGCODEC_PXM=ON\-DWITH_IMGCODEC_SUNRASTER=ON\-DWITH_INF_ENGINE=OFF\-DWITH_IPP=OFF\-DWITH_ITT=OFF\-DWITH_JASPER=ON\-DWITH_JPEG=ON\-DWITH_LAPACK=ON\-DWITH_LIBREALSENSE=OFF\-DWITH_NVCUVID=OFF\-DWITH_OPENCL=OFF\-DWITH_OPENCLAMDBLAS=OFF\-DWITH_OPENCLAMDFFT=OFF\-DWITH_OPENCL_SVM=OFF\-DWITH_OPENEXR=OFF\-DWITH_OPENGL=OFF\-DWITH_OPENMP=OFF\-DWITH_OPENNNI=OFF\-DWITH_OPENNNI2=OFF\-DWITH_OPENVX=OFF\-DWITH_PNG=OFF\-DWITH_PROTOBUF=OFF\-DWITH_PTHREADS_PF=ON\-DWITH_PVAPI=OFF\-DWITH_QT=OFF\-DWITH_QUIRC=OFF\-DWITH_TBB=OFF\-DWITH_TIFF=ON\-DWITH_VULKAN=OFF\-DWITH_WEBP=ON\-DWITH_XIMEA=OFF\-DBUILD_opencv_highgui=OFF\..

步骤三:编译

make-j8


步骤四:安装

makeinstall

部署到板子上

方法一:拷贝进入系统目录,对应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

发文助手

发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】

暂无建议
页: [1]
查看完整版本: OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台