ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220830-hi3516交叉编译opencv4.6.0

2022-08-30 09:31:17  阅读:202  来源: 互联网

标签:CMAKE details opencv4.6 blog BUILD https article hi3516 20220830


1. 下载opencv4.6.0并解压

https://opencv.org/releases/

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

#!/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

#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

# 设置目标工程名称
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

 

标签:CMAKE,details,opencv4.6,blog,BUILD,https,article,hi3516,20220830
来源: https://www.cnblogs.com/d442130165/p/16638141.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有