20220830-hi3516交叉编译opencv4.6.0
1. 下载opencv4.6.0并解压
unzip opencv-4.6.0.zip
cd opencv-4.6.0
2. 安装基础工具
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
3. 在opencv-4.6.0/目录下编写编译脚本
vim build.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #!/bin/bash set -e # Exit immediately if a command exits with a non-zero status. BuildDir= /home/ydf/work/src/001/opencv/opencv-4 .6.0 /build ToolChain= /opt/hisi-linux/x86-arm/arm-himix200-linux if [ ! -d "$BuildDir" ]; then # Take action if $BuildDir doesnât exists. echo "create ${BuildDir}..." mkdir -p ${BuildDir} fi cd ${BuildDir} echo "building OpenCV4" cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_SHARED_LIBS=OFF \ -D CMAKE_FIND_ROOT_PATH=${ToolChain}/ \ -D CMAKE_TOOLCHAIN_FILE=.. /platforms/linux/arm-gnueabi .toolchain.cmake \ -D CMAKE_C_COMPILER=${ToolChain} /bin/arm-himix200-linux-gcc \ -D CMAKE_CXX_COMPILER=${ToolChain} /bin/arm-himix200-linux-g ++ \ -D CMAKE_C_FLAGS= "-mfloat-abi=softfp -mfpu=neon" \ -D CMAKE_CXX_FLAGS= "-mfloat-abi=softfp -mfpu=neon" \ -D CMAKE_INSTALL_PREFIX=${BuildDir} /install \ -D WITH_TBB=ON \ -D WITH_EIGEN=ON \ -D BUILD_ZLIB=ON \ -D BUILD_TIFF=ON \ -D BUILD_JASPER=ON \ -D BUILD_JPEG=ON \ -D BUILD_PNG=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D WITH_LIBV4L=ON \ -D BUILD_opencv_python=OFF \ -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D BUILD_EXAMPLES=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_WITH_DEBUG_INFO=OFF \ -D BUILD_DOCS=OFF \ -D WITH_OPENCL=OFF \ -D WITH_1394=OFF \ .. make -j$(nproc) |
4. 编译opencv
sh build.sh
5. 编写测试程序
vim test.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h> #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv) { if ( argc != 2 ) { printf ( "usage: test.out <image_Path>\n" ); return -1; } Mat image = imread(argv[1]); if (image.empty()) { printf ( "Reading image fails.\n" ); return -1; } Mat gray; cvtColor(image, gray, COLOR_BGR2GRAY); imwrite( "gray.jpg" , gray); printf ( "Writing gray image success.\n" ); return 0; } |
6. 编写cmake文件
vim CMakeLists.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # 设置目标工程名称 project(TEST) # 设置生成文件名称 set (TARGET test ) # 设置编译最小版本 cmake_minimum_required(VERSION 3.12) # 设置目标平台系统 set (CMAKE_SYSTEM_NAME Linux) # 设置交叉编译路径 set (CMAKE_FIND_ROOT_PATH /opt/hisi-linux/x86-arm/arm-himix200-linux/bin ) # 设置交叉编译工具 set (CMAKE_C_COMPILER arm-himix200-linux- gcc ) set (CMAKE_CXX_COMPILER arm-himix200-linux-g++) set (CMAKE_C_EXTENSIONS "" ) set (CMAKE_CXX_EXTENSIONS "" ) # 设置库的目录路径 set (OpenCV_DIR /home/ydf/work/src/001/opencv/opencv-4 .6.0 /build ) find_package(OpenCV REQUIRED) message(STATUS "OpenCV library status:" ) message(STATUS " version: ${OpenCV_VERSION}" ) message(STATUS " libraries: ${OpenCV_LIBS}" ) message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}" ) # 添加编译文件目录 aux_source_directory(${PROJECT_SOURCE_DIR} USRSRC) # 添加生成执行文件 add_executable(${TARGET} ${USRSRC}) # 执行生成文件链接 TARGET_LINK_LIBRARIES(${TARGET} ${OpenCV_LIBS}) 7.编译测试文件 rm -rf build && mkdir build && cd build && cmake .. && make |
7. 编译测试文件
rm -rf build && mkdir build && cd build && cmake .. && make
8. 拷贝生成文件到开发版,如果出现symbol _ZNSt15__exception_ptr13exception_ptrC1Ev, version CXXABI_1.3.11 not defined in file libstdc++.so.6 with link time reference问题,请使用/opt/hisi-linux/x86-arm/arm-himix200-linux/arm-linux-gnueabi/lib/libstdc++.so.6.0.23复制到板子上/lib进行替换,可能开发板自带的libstdc++.so.6.0.23存在问题。
参考:
opencv编译
https://www.cnblogs.com/zhangxingcomeon/p/15039284.html
https://blog.csdn.net/a1874738854/article/details/88841844
https://blog.csdn.net/weixin_39553776/article/details/110108136
https://zhuanlan.zhihu.com/p/84839635
https://www.abaozhan.com/news_txtlist_i22535v.html
https://wenku.baidu.com/view/aa51fe5601768e9951e79b89680203d8ce2f6ad0.html
https://blog.csdn.net/weixin_42405819/article/details/117996788
https://blog.csdn.net/m0_38061927/article/details/108189587
https://blog.csdn.net/avideointerfaces/article/details/89477828
https://blog.csdn.net/juluwangriyue/article/details/114339457
https://blog.csdn.net/aslily1234/article/details/105348946/
https://blog.csdn.net/weixin_34167819/article/details/88977429
https://www.thinbug.com/q/15170136
https://blog.csdn.net/weixin_30773135/article/details/95141139
https://cloud.tencent.com/developer/article/1940015
cmake编译
https://blog.csdn.net/niewei120/article/details/124386802
http://t.zoukankan.com/geoffreyone-p-10837606.html
https://blog.csdn.net/qq_29935433/article/details/123554805
https://zhuanlan.zhihu.com/p/106473031
https://www.cnblogs.com/ZQQH/p/8710800.html
https://blog.csdn.net/bbszhenshuai/article/details/106200228
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律