如何用源码编译包含有opencl的opencv

本文档详细介绍了如何从源码编译OpenCV以包含OpenCL支持。首先,准备OpenCL SDK,然后创建opencv目录,将源码复制进去,并设置必要的环境变量。接着,使用CMake配置编译选项,确保开启OpenCL支持。在编译过程中,可能遇到SSL问题,需要安装相应依赖。最后,编译完成后,生成的库文件将位于指定目录,但需要注意libopencv_java3.so可能未被正确生成,需要检查ANT_EXECUTABLE是否存在。
摘要由CSDN通过智能技术生成

在opencv的sdk里面拷贝一个include和lib库,结构如下

~/opencl_sdk
├── include
│   └── CL
│       ├── cl_d3d10.h
│       ├── cl_d3d11.h
│       ├── cl_dx9_media_sharing.h
│       ├── cl_egl.h
│       ├── cl_ext.h
│       ├── cl_gl_ext.h
│       ├── cl_gl.h
│       ├── cl.h
│       ├── cl.hpp
│       ├── cl_platform.h
│       └── opencl.h
├── lib
│   └── libOpenCL.so

在~下创建一个opencv目录,然后将我们的opencv的源码拷贝进去

mkdir opencv

cd opencv

cp -a  ~/opencv-3.3.0 .

mkdir build

在~/.bashrc里面加上ndk和cmake的环境变量

export ANDROID_NDK=/opt/android-ndk-r14b

export PATH=$PATH:/opt/android-ndk-r14b:/opt/arm-linux-androideabi/bin:~/android/prebuilts/sdk/tools/linux/bin:/usr/bin/:/usr/local/cmake-3.0.1/bin

export OPENCL_SDK=~/opencl_sdk
保存后source一下

source ~/.bashrc

然后进入到build目录下进行配置

cd ~/opencv/build

cmake -Wno-dev \

-DCMAKE_CXX_FLAGS=-std=c++11 \
-DCMAKE_TOOLCHAIN_FILE=../opencv-3.3.0/platforms/android/android.toolchain.cmake \
-DANDROID_ABI="arm64-v8a" \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=ON \
-DINSTALL_ANDROID_EXAMPLES=OFF \
-DWITH_OPENCL=YES \
-DANDROID_OPENCL_SDK=$OPENCL_SDK \
-DANDROID_NATIVE_API_LEVEL=14 \
-DANDROID_SDK_TARGET=24 \

../opencv-3.3.0

配置完后编译

make -j8

最后安装

make install

在~/opencv/build/install/sdk/native/libs/arm64-v8a下就会生成动态库

但是生成的动态库里面并没有发现libopencv_java3.so

在CMakeLists.txt里面查看Java的部分如下

# ========================== java ==========================
status("")
status("  Java:")
status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"                    ELSE NO)
if(NOT ANDROID)
  status("    JNI:"         JNI_INCLUDE_DIRS    THEN "${JNI_INCLUDE_DIRS}"                                       ELSE NO)
endif()
status("    Java wrappers:" HAVE_opencv_java                                                            THEN YES ELSE NO)
status("    Java tests:"    BUILD_TESTS AND opencv_test_java_BINARY_DIR                                 THEN YES ELSE NO)

这里可以知道编译生成libopencv_java.so需要满足ANT_EXECUTABLE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值