rk3588使用交叉编译opencv静态库

参考:https://blog.csdn.net/wave789/article/details/131804601

https://zhuanlan.zhihu.com/p/585528434

在PC端:

        使用rknn_model_zoo推荐的交叉编译工具:gcc-linaro-6.3.1(aarch64)

        下载后解压

        克隆opencv,opencv_contrib(按个人需求)

        进入opencv目录下,创建build,install两个目录

        进入build目录,执行cmake

cmake -D TARGET_SOC=rk3588 -D CMAKE_SYSTEM_NAME=Linux -D CMAKE_SYSTEM_PROCESSOR=aarch64 -D CMAKE_BUILD_TYPE=Release -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_C_COMPILER=xxx/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc # 替换成自己环境下交叉编译工具gcc的路径 \
-D CMAKE_CXX_COMPILER=/home/wxg/jhq/code/about_rknn/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ # 替换成自己环境下交叉编译工具g++的路径\
-D BUILD_SHARED_LIBS=OFF -D CMAKE_CXX_FLAGS=-fPIC -D CMAKE_C_FLAGS=-fPIC -D CMAKE_EXE_LINKER_FLAGS="-lpthread -ldl" -D ENABLE_PIC=OFF -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=OFF  -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=ON  -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_JAVA=OFF  -D BUILD_opencv_python3=OFF  -D CMAKE_INSTALL_PREFIX=../install   -D WITH_GTK=OFF  -D WITH_EIGEN=OFF \
-D OPENCV_EXTRA_MODULES_PATH="xxx/opencv_contrib/modules" # 替换成自己环境下opencv_contrib路径\
-D BUILD_ZLIB=ON  -D ZLIB_INCLUDE_DIR="../3rdparty/zlib"  -D OPENCV_GENERATE_PKGCONFIG=ON  ..

        执行make

        make install

        编译的静态库会安装在install目录下

编写测试代码test_opencv,目录结构如下,demo.jpeg随便找张测试图片即可:

main.cpp:

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

int main(int argc, char const *argv[])
{
    cv::Mat img = cv::imread("demo.jpeg"); //替换成自己目录下的图片名称
    std::cout << "width: " << img.cols << std::endl;
    std::cout << "height: " << img.rows << std::endl;
    std::cout << "channel: " << img.channels() << std::endl;
    cv::imwrite("output.jpg", img);
    return 0;
}

CMakeLists.txt:

project(test_opencv)
add_compile_options(-fPIC)

set(OpenCV_DIR xxx/install/lib/cmake/opencv4) # xxx替换成自己opencv的install目录,此目录包含OpenCVConfig.cmake
find_package(Iconv)
find_package(OpenCV REQUIRED)
add_executable(test_opencv main.cpp)
target_link_libraries(test_opencv ${OpenCV_LIBS})

install(TARGETS ${PROJECT_NAME} DESTINATION .)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/demo.jpeg DESTINATION .)

进入build目录, cmake

cmake .. -DTARGET_SOC=rk3588 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_BUILD_TYPE=Release -D CMAKE_C_COMPILER=xxx/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc # 替换成自己的交叉编译工具gcc路径\
-D CMAKE_CXX_COMPILER=xxx/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ # 替换成自己的交叉编译工具g++路径\
-DCMAKE_INSTALL_PREFIX=../demo

 将demo路径下的东西scp到rk588上,运行

在wsl环境下修改以上cmake配置环境相关的编译选项后,3rdparty里面没有liblibopenjp2.a

编译代码时报:/usr/bin/ld: cannot find -lopenjp2: No such file or directory

是编译opencv时没有生成openjp2的静态库导致的

解决参考:WSL2编译安装opencv时出现#include<openjepg.h>报错

        Try to build OpenCV 4.5 in WSL2 but fail with openjpeg

cmake 编译选项:

添加了:-D BUILD_OPENJPEG=ON -D BUILD_JASPER=ON -D BUILD_OPENJPEG2=ON 

cmake -D CMAKE_SYSTEM_NAME=Linux -D CMAKE_SYSTEM_PROCESSOR=x64  -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=OFF -D CMAKE_CXX_FLAGS=-fPIC -D CMAKE_C_FLAGS=-fPIC -D CMAKE_EXE_LINKER_FLAGS="-lpthread -ldl" -D ENABLE_PIC=OFF -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=OFF  -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=ON  -D WITH_PROTOBUF=ON  -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_JAVA=OFF  -D BUILD_opencv_python3=OFF  -D CMAKE_INSTALL_PREFIX=../../install/x64   -D WITH_GTK=OFF  -D WITH_EIGEN=OFF 
-D BUILD_OPENJPEG=ON -D BUILD_JASPER=ON -D BUILD_OPENJPEG2=ON 
-D BUILD_ZLIB=ON -D OPENCV_EXTRA_MODULES_PATH="../../../opencv_contrib/modules" -D ZLIB_INCLUDE_DIR="../../3rdparty/zlib"  -D OPENCV_GENERATE_PKGCONFIG=ON   ../..

在安装目录能找到该静态库,问题解决 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值