Linux交叉编译opencv并移植ARM端

这篇具有很好参考价值的文章主要介绍了Linux交叉编译opencv并移植ARM端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux交叉编译opencv并移植ARM端 - 知乎

一、安装交叉编译器

目标平台为arm7l,此为32位ARM架构,要安装合适的编译器

sudo apt install arm-linux-gnueabihf-gcc
sudo apt install arm-linux-gnueabihf-g++

注意:64位ARM架构的编译器与32位ARM架构的编译器不能通用

二、opencv交叉编译

opencv的交叉编译工具链在../opencv3.2.0/platforms/linux 路径下,linux文件夹下是一些.cmake文件,对应不同的移植对象,我需要在rv1126上部署模型,所以选择platform/linux/arm-gnueabi.toolchain.cmake

你也可以对其作出修改(添加编译器所在位置):

set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "arm-linux-gnueabi" CACHE STRING "GNU compiler triple")



set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++)

include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")

也可以直接执行交叉编译命令

mkdir build && cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/mnt/usr/local -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv/opencv_contrib/modules/ -D OPENCV_ENABLE_NONFREE=True -DCMAKE_TOOLCHAIN_FILE=/opt/opencv/platforms/linux/arm-gnueabi.toolchain.cmake -D WITH_FFMPEG=ON ..

sudo make -j8
sudo make install
Linux交叉编译opencv并移植ARM端,# 软件安装,OpenCV实战,linux,运维,服务器
gnueabi.toolchain.cmake没有修改,也能找到编译器位置

编译结束后进入 build 文件夹,里面生成bin,include,lib,share四个文件夹

三、Linux上生成ARM架构下可执行文件

创建测试用例test.cpp,内容如下

#include <opencv2/opencv.hpp>
 
using namespace cv; 
 
int main( int argc, char** argv )  
{  
	Mat image;  
 
	image = imread( "7.bmp", 1 );  
	if( !image.data )  
	{  
		printf( "No image data \n" );  
		return -1;  
	}   
 
	cv::Point lu = cv::Point(180, 60); 
	cv::Point rd = cv::Point(400, 260);   
 
	cv::rectangle(image, lu, rd, cv::Scalar( 255, 20, 0 ), 1, cv::LINE_AA );                 	
 
	imwrite("8.bmp", image);        
 
	return 0;  
}

CMakeList.txt

cmake_minimum_required(VERSION 2.8.4)

project(draw_image)
include ($ENV{HOME}/configs/cross.cmake)

find_package(OpenCV REQUIRED)
add_executable(${CMAKE_PROJECT_NAME} test.cpp)
target_include_directories(draw_image PUBLIC ${OpenCV_INCLUDE_DIRS})
target_link_libraries(draw_image PRIVATE ${OpenCV_LIBS})
~                                                        

在终端执行:
 

mkdir build && cd buid
cmake ..
make

在test.cpp同一目录下会生成可执行文件 draw_image,利用file draw_image检查可执行文件格式是否支持arm

draw_image: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=6030f6191b409626a1f54c996cebb91aad644061, for GNU/Linux 3.2.0, not stripped

出现如上结果说明可执行文件支持ARM7l

四、移植ARM端执行

将 build文件夹里面的include和lib里的文件分别拷贝到ARM板的/usr/include 和/usr/lib下 然后打开终端执行可执行文件即可。

build文件里include也许是空的,你可以在安装目录/include/找到opencv的头文件

draw_image可以执行

Linux交叉编译opencv并移植ARM端,# 软件安装,OpenCV实战,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-651288.html

到了这里,关于Linux交叉编译opencv并移植ARM端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Tengine 边缘AI计算框架移植RV1126(包括opencv的交叉编译)

    目录 1.编译opencv 2.拷贝SDK源码到虚拟机 3. 拉取TIM-VX代码 4.拉取Tengine源码并配置 编译opencv是为了,在编译Tengine时指定OpenCVConfig.cmake,以便寻找特定的opencv动态库 01.从github拉取opencv源代码 02.在虚拟机安装cmake 04.解压opencv源码,并进入文件 05.新建文件ax620a.toolchain.cmake配置交叉编

    2024年02月08日
    浏览(48)
  • OpenCV交叉编译—arm(imx6ull,Cortex-A7)

    opencv - 4.2.0(opencv4.5.4版本在交叉编译时会报错) Ubuntu - 20.04 64位 gcc version 4.9.4 (Linaro GCC 4.9-2017.01) arm板:imx6ull, Cortex - A7 内核挂载:nfs+SecureCRT 1、下载 2、选择路径 根据自己Ubuntu来下载,下载完以后复制到自己要安装的路径,也可以不移动。 完成以后使用命令解压: 3、解压

    2024年02月06日
    浏览(43)
  • ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

    安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单,用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译,且还有许多问题,本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。 硬件环境: RK3568 + Ubuntu20.04。 1、安装 OpenCV 需要的依赖库。 先添加源,以防安装

    2024年04月08日
    浏览(131)
  • libdrm交叉编译并移植到arm开发板

    首先去官网下载源码包 https://dri.freedesktop.org/libdrm/ ,在这里我们选择最新的下载,如下图 下载完成后,开始解压缩,解压缩完成后,进入源码目录,首先创建 install 和 build 目录,然后创建 cross_file.txt 文件,文件内容如下, 然后进入我们刚创建好的 build 目录,执行语句 me

    2024年02月16日
    浏览(103)
  • ubuntu交叉编译Qt-5库并移植ARM开发板

    前言:本文将介绍Qt5源码方式的交叉编译及安装 下载源码包:qt-everywhere-src-5.12.8.tar.xz 官网下载网址:Index of / 依次选择: 【official_releases】 =【qt】 =【5.12】 =【5.12.8】 =【single】 =【qt-everywhere-src-5.12.8.tar.xz】 先解压QT库压缩包出来,并进入解压出来的库目录。 接下来请按以

    2023年04月08日
    浏览(44)
  • 【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

    就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中 创建一个目录 ,例如/usr/local/arm,然后将下载好的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueab

    2024年02月03日
    浏览(42)
  • Linux 下编译和交叉编译FFmpeg、OpenCV(contrib )库

    目录 一、Linux下FFmpeg库的编译 1.1 yasm库 1.2 安装X264 1.3 安装FFmepg 1.4 实验 报错 二、Linux 下OpenCV库的编译 三、环境变量设置 四、FFmpeg Linux交叉编译 4.1 FFmpeg不依赖其他库编译 4.2 FFmpeg编译依赖库(如X264) 以上3部分验证过得,是正确的,第四步没验证 五、OpenCV的交叉编译 hkx@ubun

    2024年01月22日
    浏览(70)
  • QT·移植Qt到ARM平台及搭建Qt交叉编译环境

    目录 一、编译tslib库 二、移植 tslib 到文件系统  三、编译Qt源码(用于移植到ARM) 四、移植Qt到文件系统  五、搭建 Qt Creator 交叉编译环境  六、获得Qt可执行文件的另一种方法 要想在ARM平台上运行Qt程序,得满足以下两个点: 1、ARM平台上搭建Qt运行环境 2、获得通过交叉编

    2024年02月02日
    浏览(50)
  • Linux安装配置ARM交叉编译器arm-linux-gnueabihf-gcc

    ARM交叉编译器是一种用于在一种架构(通常是x86或x86-64)上生成在另一种架构(如ARM)上运行的程序的工具。这种情况称为交叉编译,因为编译器和相关工具在不同的体系结构之间进行交叉工作。 主要用途如下: 嵌入式开发: ARM交叉编译器通常用于嵌入式系统开发,其中

    2024年02月01日
    浏览(42)
  • QT学习笔记-oracle oci数据库驱动交叉编译并移植到ARM开发板

    在上一文《QT学习笔记-QT安装oracle oci驱动》中介绍了在Windows环境下使用QT访问oracle数据库时遇到驱动无法加载问题的解决办法,大体思路是对QT源码中数据库驱动的源码oci进行编译,要想通过编译需要依赖对应数据库的头文件和库(可以通过下载oracle instant client),编译通过

    2024年02月13日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包