• 嵌入式开发之移植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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    nginx源代码分析--从源代码看nginx框架总结
    [Android]自己定义带删除输入框
    A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包
    cmake使用演示样例与整理总结
    Hibernate也须要呵护——Hibernate的泛型DAO
    hdoj-1242-Rescue【广搜+优先队列】
    五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)
    动态标绘演示系统1.4.3(for ArcGIS Flex)
    CodeForces
    OpenCV——颜色运算
  • 原文地址:https://www.cnblogs.com/lixuejian/p/11736668.html
Copyright © 2020-2023  润新知