0. 序言

  • PC操作系统:Ubuntu 16.04
  • OpenCv版本:4.0
  • 交叉工具链:arm-linux-gnueabihf,gcc version 5.4.0
  • 目标平台:arm
  • 编译时间:20181224
  • 建议新手先看交叉编译的这篇文章:https://www.jianshu.com/p/0fcdce428d8f

1. 下载C++版本Eclipse

下载地址:https://www.eclipse.org/downloads/packages/ 选择Linux 64位

2. 创建C++Project

  • 步骤1:File-New-Project..-C++Project-Next-输入Project name-Next-输入Author-Next:

     
     
     
     
  • 步骤2:默认Debug和Release:

     
     
  • 步骤3:输入交叉编译命令的前缀和交叉编译所在的路径并点击Finish:
     
     

    说明:这里看不懂的,建议先看交叉编译的文章:https://www.jianshu.com/p/0fcdce428d8f

  • 目录结构:

     
     

3. 编写C++代码

  • 把Exam.cpp的代码替换为以下代码并保存:
 #include<opencv2/core.hpp>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/imgproc.hpp>
using namespace cv;
int main(void)
{
Mat pic;
pic=imread("gaoyuanyuan.jpg");
Mat gray;
cvtColor(pic,gray,COLOR_BGR2GRAY);
imwrite("gray.png",gray);
return ;
}
注意:这里一定要执行保存的操作。
 
 

4. 添加头文件的路径

  • 右击项目Exam,选择Properties并设置如图选项,然后点击Apply And Closed。

     
     

    说明:
    ① /usr/local/arm/opencv-arm/ 是交叉编译执行make install后存放可执行文件的目录,也就是CMAKE_INSTALL_PREFIX对应的目录
    ② /usr/local/arm/opencv-arm/include/opencv4/ 对应Exam.cpp的代码"#include<opencv2/core.hpp>"
    ,因为我的opencv4的下一级目录是opencv2,opencv2里面存放的是头文件。

     
     

5. 添加库依赖

  • 右击项目Exam,选择Properties并设置如图选项,然后点击Apply And Closed。

     
     
     
     
注意:Libraries是手写的,它会自动拼接lib和so字符找到指定的依赖。而path则是上上个图展示的存放so文件的目录的路径。

6. 添加C++11新特性

  • Project->Properties->C/C++ Build->Settings->GCC G++ Compiler->Miscellaneous->Other flags 将-c -fmessage-length=0 改为 -c -fmessage-length=0 -std=c++11

     
    image.png

7. 项目Clean然后Build

  • Clean 是为了防止你中途没有配置完Properties就Build项目:

     
     

    说明:Building file是原始我们的cpp文件,Building target指的是编译cpp文件生成的可执行文件。

8. 导出可执行文件和so文件并执行

  • Exam可执行文件存放在生成的Debug目录下:

     
     
  • so文件就是我们刚刚指定的libraries依赖的path路径下的so文件:

     
     
  • 复制Exam可执行文件以及Exam.cpp程序所需的一张图片到arm平台的一个目录下,这里用到的图片名称为gaoyuanyuan.jpg
  • 复制so文件到arm平台的/lib文件夹下。
  • 进入Exam可执行文件和图片所在的目录,执行命令,就会生成一张gray.png图片:
./Exam
 

作者:付凯强
链接:https://www.jianshu.com/p/f515357e1539
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

嵌入式开发之移植OpenCv可执行程序到arm平台的更多相关文章

  1. 移植strace调试工具到arm平台

    strace工具是一个非常强大的工具,是调试程序的好工具.要移植到arm平台,就需要使用交叉编译工具编译生成静态链接的可执行文件.具体步骤如下:1.下载 strace-4.5.16     移植str ...

  2. (嵌入式开发)移植最新uboot

    一:准备移植 1.从下面的官网下载最新的U-boot.用google英文版搜索最新的u-boot源码  ftp://ftp.denx.de/pub/u-boot/ 2.建立sourceinsight工 ...

  3. 移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台  MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.p ...

  4. zedboard开发板上移植opencv代码(立体匹配)

    前言 公司要做立体匹配相关的项目,已有matlab和c++版本,可是不能做到实时显示立体信息,想要硬件实现实时,无奈本渣也是个硬件的新手,先按照实验室lyq同学的思路在zedboard开发板的纯ARM ...

  5. 应聘linux/ARM嵌入式开发岗位

    **************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

  6. ARM嵌入式开发板

    iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...

  7. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  8. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  9. ARM嵌入式开发中的GCC内联汇编__asm__

    在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择.但如果完全通过汇编代码实现,又会过于复杂.难以调试.因此,C语言内嵌汇编的方式 ...

随机推荐

  1. nginx入门系列之应用场景介绍

    目录 HTTP服务器 反向代理服务器 作为一个虚拟主机下多个应用的反向代理 作为多个虚拟主机的反向代理 负载均衡器 简单轮训策略 最小连接数策略 客户端IP哈希策略 服务器权重策略 邮件代理服务器 官 ...

  2. mavn jar包依赖冲突解决

    背景:使用maven很方便,但是引入冲突也很常见.后果很严重,各种不明实体找不到,所以需要对jar包的依赖有一个清晰的认识. 查看冲突 参考:用dependency:tree查看maven引入jar包 ...

  3. 如何科学的登陆GTA5

    GTA5一款不存在游戏 又是一年促销,在舍友的诱惑下,终于下决心买了GTA5的线上模式,但是到游玩的时候却遇到了很多麻烦. 我总结了有三个问题: 1.笔记本或者低配电脑运行起来很卡,掉帧. 2.网络延 ...

  4. ThinkPHP3开发模式,控制器操作,配置文件,框架语法

    ThinkPHP的开发模式 tp框架有两种使用模式:开发模式(调试模式),一种是生产模式(运行模式) define('APP_DEBUG', true);  //调试模式 define('APP_DE ...

  5. JS核心系列:原型对象

    在JS中,每当创建一个函数对象f1 时,该对象中都会内置一些属性,其中包括prototype和proto, prototype即原型对象. 每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象 ...

  6. 前端与算法 leetcode 28.实现 strStr()

    # 前端与算法 leetcode 28.实现 strStr() 题目描述 28.移除元素 概要 这道题的意义是实现一个api,不是调api,尽管很多时候api的速度比我们写的快(今天这个我们可以做到和 ...

  7. Math 类

    Math 类 java.lang.Object java.lang.Math 方法签名 public final class Math extends Object public static fin ...

  8. 关于Django数据库mysql连接错误问题Connection to api@localhost failed. [08001] Could not create connection to d

    Connection to api@localhost failed. [08001] Could not create connection to d 错误类型 django连接mysql数据库错误 ...

  9. [译] QUIC Wire Layout Specification - Introduction & Overview | QUIC协议标准中文翻译(1) 简介和概述

    本文同步发布于: https://www.pengrl.com/p/33330/ ,转载请注明出处,谢谢. 目录 Introduction | 简介 Conventions and Definitio ...

  10. python 递归\for循环_斐波那契数列

    # 递归 def myAdd(a, b): c = a + b print(c) if c > 100: return return myAdd(a + 1, c) #最大递归深度是1000 m ...