天天看點

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

若該文為原創文章,轉載請注明原文出處

各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼自己研究

​​紅胖子(紅模仿)的博文大全:開發技術集合(包含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的移植

步驟一:下載下傳解壓

  

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

步驟二:配置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 \
             ..      

  

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

步驟三:編譯

make -j8      

  

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

  

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

步驟四:安裝

make install      

  

OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

部署到闆子上

  • ​方法一​:拷貝進入系統目錄,對應bin、include、lib
  • ​方法二​:單獨一個目錄,運作前跑腳本進入路徑(筆者是Qt,将opencv打入qt的安裝目錄,使用qt的路徑即可)。

    貼上開發本Qt的腳本(注意系統不同,平台的參數最後2個可能不同):

      

    OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平台Hi35xx平台

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識别物體​​》

下一篇:持續補充中…

若該文為原創文章,轉載請注明原文出處