编译opencv的android版本(with ffmpeg)


1. 下载opencv的源码

2. 在opencv的根目录下新建目录mybuild

3. 进入mybuild目录,执行命令:


cmake \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D CUDA_FAST_MATH=ON \
    -D WITH_CUFFT=ON \
    -D WITH_NVCUVID=ON \
    -D WITH_V4L=ON \
    -D WITH_LIBV4L=ON \
    -D WITH_FFMPEG=ON \
-DCMAKE_TOOLCHAIN_FILE=\
../platforms/android/android.toolchain.cmake \
-DANDROID_NDK=/home/zhht/Android/android-ndk-r11c/ \
-DCMAKE_BUILD_TYPE=Release  \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_NATIVE_API_LEVEL=21  ..

 或者用这个:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_FAST_MATH=ON -D WITH_CUFFT=ON -D WITH_NVCUVID=ON -D WITH_V4L=ON -D WITH_LIBV4L=ON -D OPENCV_EXTRA_MODULES_PATH=/home/zhht/github/opencv_contrib/modules  -D WITH_FFMPEG=ON -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake  -DANDROID_NDK=/home/zhht/Android/android-ndk-r11c/ -DCMAKE_BUILD_TYPE=Release  -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=21  -DANDROID_SDK_ROOT=/home/zhht/Android/Sdk/  ..

4. 有时WITH_FFMPEG的flag设置后,不一定能生效,需要修改opencv根目录下的CMakeLists.txt文件和cmake文件夹下面的OpenCVFindLibsVideo.cmake文件。


5. 手动修改文件/home/zhht/opencv/opencv/modules/java/CMakeLists.txt

if(ANDROID)
  link_directories("/home/zhht/repo/ffmpeg/android/arm/lib")
  ocv_target_link_libraries(${the_module} LINK_PUBLIC jnigraphics) # for Mat <=> Bitmap converters
  ocv_target_link_libraries(${the_module} LINK_PUBLIC log dl z)
  ocv_target_link_libraries(${the_module} LINK_PRIVATE avcodec avformat avutil swscale)
  ocv_target_link_libraries(${the_module} LINK_PRIVATE ${OPENCV_LINKER_LIBS})

5. 编译后会出现链接不到ffmpeg库的情况,手动修改modules/java/CMakeFiles/opencv_java.dir/link.txt文件,加上要链接的库路径和ffmpeg库

-L/home/zhht/repo/ffmpeg/android/arm/real_lib/   -lavcodec -lavformat -lavutil -lswscale

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值