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. Laya一个莫名其妙的报错laya.pathfinding

    版本2.2.0 莫名其妙,然后论坛查了下 把类库设置,不勾选这玩意就不报错了.

  2. [ Docker ] 基础的网络应用

    1. Docker 基本网络模型 Docker 有 4 种基本的网络模型: bridge 桥接模式 host 网络模式 container 联盟模式 none 模式 Docker daemon 在启动 ...

  3. 解决net core mvc 中文乱码问题

    在Startup 配置文件下的ConfigureServices方法中添加:    services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All ...

  4. Python unittest(PyUnit)单元测试框架

    PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试.PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用 ...

  5. [转] 这个常识很重要,教你如何区分JEDEC 1600内存与XMP 1600内存

    [ 本主题由 围观分子803 于 2016-03-01 20:14:26 设为精华1,原因:主题新颖,支持知识普及! ] 最后由 幻尘 于 2016-03-01 11:57:15 修改 也许一些DIY ...

  6. python3.5+tornado学习

    python3.5的安装 python官网下载地址:https://www.python.org/ 自行下载最新版本 下载pip包或者easy_install 后缀为.gz格式 地址:https:// ...

  7. Nginx+Keepalived实现web服务器高可用

    1.Nginx 业务背景 现公司需求快速搭建web服务器,对外提供给用户web服务. 需求拆分 需要基于http协议的软件,搭建服务实现 介绍 常见用法: 1) web服务器软件 httpd http ...

  8. LeetCode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements) 47

    453. 最小移动次数使数组元素相等 453. Minimum Moves to Equal Array Elements 题目描述 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移 ...

  9. 寻找最小矩形边框--OpenCv

    好久没有写博客了 今天写一下比较常用的寻找矩形边框 ////////////////////////////寻找最矩形边框/////////////////////////////////////// ...

  10. UML交互图

    UML 交互图主要包括对象和消息两类元素,创建交互图的过程实际上就是向对象分配任务的过程,是可视化系统的交互行为. UML 交互图包括两种:序列图和协作图. 序列图:显示对象之间的关系,强调对象之间消 ...