前言
移植opencv到海思平臺,opencv支援對視訊進行解碼,需要對應的ffmpeg支援。
Ffmpeg的移植請參考之前的文章:《FFmpeg開發筆記(十):ffmpeg在ubuntu上的交叉編譯移植到海思HI35xx平臺》
(PS:ffmpeg解碼h264是不需要依賴libx264的,但是編碼是需要依賴libx264的,在海思上使用了mpp的venc,所以無需libx264)
下載地址:https://github.com/opencv/opencv/releases/tag/3.4.1
QQ群:1047134658(點選“檔案”搜尋“opencv”,群內與博文同步更新)
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個可能不同):
# 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
將opencv部署到板子上,然後用qt的opencv播放器測試,播放慢速(判斷是解碼720p,mp4,h264大概11-12ms一幀,顯示大概15ms一幀,刷圖跟重新整理的區域面積有直接關係,所以確認海思用qt動態重新整理繪圖能力可以說得上是有點差的)(圖略)
上一篇:《OpenCV開發筆記(七十三):紅胖子8分鐘帶你使用opencv+dnn+yolov3識別物體》
下一篇:持續補充中…