嵌入式开发之移植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
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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。