zoukankan      html  css  js  c++  java
  • 嵌入式开发之移植OpenCv可执行程序到arm平台

    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的代码替换为以下代码并保存:
     1 #include<opencv2/core.hpp>
     2 #include<opencv2/imgcodecs.hpp>
     3 #include<opencv2/imgproc.hpp>
     4 using namespace cv;
     5 int main(void)
     6 {
     7     Mat pic;
     8     pic=imread("gaoyuanyuan.jpg");
     9     Mat gray;
    10     cvtColor(pic,gray,COLOR_BGR2GRAY);
    11     imwrite("gray.png",gray);
    12     return 0;
    13 }
    注意:这里一定要执行保存的操作。
     
     

    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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图
    Java文件IO操作应该抛弃File拥抱Paths和Files
    什么是内存(一):存储器层次结构
    mysql 锁
    Mysql索引面试题
    node.js中对同步,异步,阻塞与非阻塞的理解
    mysql 快照读 当前度
    mysql 联合索引
    redis 分布式锁(单机)
    docker 环境搭建redis集群相关问题
  • 原文地址:https://www.cnblogs.com/lixuejian/p/11736668.html
Copyright © 2011-2022 走看看